2

我们目前正在启动一个涉及 windows 和 linux 人员并使用 SVN 的项目。

问题是想要使用 Visual Studio(大多数人是 2010 年)的人在文件夹结构和项目同步方面存在问题。

他们有ankhsvn(http://ankhsvn.open.collab.net/),他们将项目映射到真正的文件夹,所以每个人都有良好的文件结构并且解决方案在SVN上(我们不希望但是ankhsvn 有点需要它)其他人只需在 SVN 上的解决方案下检查项目文件夹。

但是如果有人不使用 SVN 添加一个新文件 VS 不会自动添加它,这会造成很多麻烦。

那么我们的设置正确吗?有没有办法在这种环境下很好地工作?你会建议我们如何工作?

4

3 回答 3

2

如果您必须为每个目标更新项目文件,则维护多个构建目标很困难。例如,添加新的源文件需要更新 Visual Studio 项目和生成文件。

试试CMake怎么样?它可以为多个构建环境生成项目文件。我们在工作中使用它来支持 32 位或 64 位 Windows 上的多个版本的 Visual Studio 以及 32 位或 64 位 Linux 上的多个版本的 gcc。每个项目(库或可执行文件)都需要维护一个用于生成目标项目文件的 CMakeLists.txt 文件。

于 2010-10-13T16:42:41.693 回答
2

我会说 Cmake 绝对是要走的路:它将只允许您维护一组文件(CMakeLists.txt),您将能够为所有 Visual Studio 版本生成项目,用于 Eclipse、Xcode 和 makefile对于 gcc、CC 等...

就设置 cmake 的难度而言:在大多数情况下,它的工作量并不大。正如您在对 Jaime 回答的评论中提到的那样,您不需要指定要包含的文件列表。您可以包含(glob)一个文件夹。这样,当添加新的源文件时,只要您通过运行 cmake 命令刷新它,它们就会包含在您的解决方案中。

在 cmake 中拥有您的项目也可能有助于建立一个持续集成框架,例如 Hudson。它可以监控您的代码存储库 (svn) 并在提交更改时调用 cmake、构建您的项目、运行单元测试。

project(MyNeatProject)

include_directories(h/ hpp/)
file(GLOB_RECURSE _my_src ./c/*.c)
file(GLOB_RECURSE _my_hdr ./h/*.h)
add_library( some_library SHARED ${YBMBS_SRC} ${YBMBS_HDR})
target_link_libraries( some_library dependency1 dependency2)
于 2010-10-26T19:56:26.873 回答
1

我会根据您团队的构成或您所针对的环境来分离我的树结构(可能是完全独立的存储库)。

每个人都需要一个 SVN 客户端——那些因为在 Eclipse 中而不能使用 AnkhSVN 的人可以使用 Tortoise 之类的东西或 Eclipse 的 SVN 插件。SVN 不知道也不关心它正在跟踪您的 C# 或 Java 或任何代码的事实。如果您将文件添加到本地硬盘,它不会神奇地出现在存储库中。

于 2010-10-12T15:37:34.673 回答