开源Visual Studio项目分发的噩梦

7 c c++ compiler-construction visual-studio visual-c++

每当微软发布新版本的visual studio时,他们总是要求我将我的解决方案和项目文件转换为"最新版本".即使使用像"Hello World"解决方案这样简单的东西,我也需要完成他们的转换向导!

而且,更糟糕的是,新的visual studio解决方案文件与旧版本的visual studio不兼容.

对于那些与一群人合作的人来说,或者任何希望为他们的项目分发源代码的人,这真是一场噩梦.

是否有任何好方法来分发视觉工作室项目,并允许使用旧版Visual Studio的人仍然使用它?这是一个简单的C程序,不使用任何漂亮的选项.我只能访问Visual Studio 2008,并且Visual Studio不提供向后"转换"向导.使用nmake + makefile发布源代码来构建程序是否有意义?似乎nmake文件格式在一段时间内没有显着改变,并且可以提供适用于更广泛版本的visual studio的makefile.

iai*_*ain 10

执行此操作的常规方法是将vs项目文件放在解决方案的子目录中.例如

solution
 - build
 -- vc6
 -- vc7
 -- vc8
 -project1
 -- src
 -- build
 --- vc6
 --- vc7
 --- vc8
 -project2
 -- src
 -- build
 --- vc6
 --- vc7
 --- vc8
Run Code Online (Sandbox Code Playgroud)

然后,当您获得新版本的vs - 将最后一个项目目录(例如vc7)复制到vc8时 - 对解决方案执行相同操作 - 在文本编辑器中打开解决方案和项目文件以修复任何路径 - 最后在新版本中打开解决方案vs并让它转换你的项目 - (使用源代码控制就像一个或你的路径错误它更新旧目录中的项目)

这很烦人,但你每隔几年就要做一次.

这就是我们以前的做法,但是有一种更好的方法,那就是使用CMake来生成你的项目.我们现在在工作中使用它,它允许使用单个项目定义在Windows和unix上本地工作.在Windows上,我们在unix上使用vs项目,我们使用eclipse和makefile.此外,CMake允许您抽象编译器和链接器标志等常见项目设置,因此只需在一个位置进行修改.

我现在将CMake用于所有c ++项目,无论我是否需要其多平台功能.


chr*_*ffe 5

您可以使用CMake作为项目的构建工具.它将为您生成VS项目文件,您只需打开该文件并使用它来构建项目.转换问题无关紧要,因为您可以使用CMake再次构建它.

在这种情况下,CMake的优势是可移植性和版本独立性(也是跨平台构建功能,但这可能不相关).然而,CMake确实有一点学习曲线,并不像使用项目文件那么简单,但它确实解决了您遇到的问题.由于您的项目相对简单,它可能是您的解决方案.


dir*_*tly 2

没有简单的答案。但我希望我们能这么做。情况只会变得更糟,因为从 2005 年开始,您还需要打包到 redist 包中或与运行时进行静态链接。我不知道如果你有一个 2008 年的静态链接二进制文件与上一代(2005 年之前)的应用程序通信,它会做什么。根据 MS 的说法,这应该有效。

您可以放心地假设所有用户都拥有 Visual Studio 的副本吗?它们都运行相同的版本吗?(我知道,现在 Express 版本是免费的...)如果您继续走这条路,您将需要根据困难来教育您的用户,并让他们都使用相同版本的 VS2008,以使周围每个人的生活更轻松。

不过,我宁愿使用 make/gcc,也不愿绕公园转一圈。