每当微软发布新版本的visual studio时,他们总是要求我将我的解决方案和项目文件转换为“最新版本”。即使使用像“Hello World”解决方案这样简单的东西,我也需要完成转换向导!
而且,更糟糕的是,新的visual studio解决方案文件与旧版本的visual studio不兼容。
与一群人合作的任何人......或任何希望为他们的项目分发源代码的人都是一场噩梦。
有没有什么好方法可以分发视觉工作室项目,并允许使用旧版Visual Studio的人仍然使用它?这是一个简单的C程序,不使用任何漂亮的选项。我只能访问Visual Studio 2008,并且Visual Studio不提供向后“转换”向导。使用nmake + makefile发布源代码来构建程序是否有意义?似乎nmake文件格式在一段时间内没有显着改变,并且可以提供适用于更广泛版本的visual studio的makefile。
答案 0 :(得分:10)
执行此操作的常规方法是将vs项目文件放在解决方案的子目录中。例如
solution
- build
-- vc6
-- vc7
-- vc8
-project1
-- src
-- build
--- vc6
--- vc7
--- vc8
-project2
-- src
-- build
--- vc6
--- vc7
--- vc8
然后当你得到一个新版本的vs - 将最后一个项目目录(例如vc7)复制到vc8 - 为解决方案做同样的事情 - 在文本编辑器中打开解决方案和项目文件以修复任何路径 - 最后在新版本的vs中打开解决方案,让它转换你的项目 - (使用源代码控制,就像一个或你的路径错误它更新旧目录中的项目)
这很烦人,但你每隔几年就必须这样做。
这就是我们以前的做法,但是有一种更好的方法,那就是使用CMake来生成项目。我们现在在工作中使用它,它允许使用单个项目定义在Windows和unix上本地工作。在Windows上,我们在unix上使用vs项目,我们使用eclipse和makefile。此外,CMake允许您抽象常见的项目设置,如编译器和链接器标志,因此只需在一个地方进行修改。
我现在将CMake用于所有c ++项目,无论我是否需要其多平台功能。
答案 1 :(得分:5)
您可以使用CMake作为项目的构建工具。它将为您生成VS项目文件,您只需打开该文件并使用它来构建项目。转换问题无关紧要,因为您可以使用CMake再次构建它。
在这种情况下,CMake的优势是可移植性和版本独立性(也是跨平台构建功能,但这可能不相关)。然而,CMake确实有一点学习曲线,并不像使用项目文件那么简单,但它确实解决了您遇到的问题。由于您的项目相对简单,它可能是您的解决方案。
答案 2 :(得分:2)
没有简单的答案。但我希望我们做到了。情况只会越来越糟,因为2005年以后你还需要打包一个redist包或者与运行时进行静态链接。如果你有一个2008静态链接二进制文件与前一代(早于2005年)的应用程序交谈,我就不知道它将会做什么。据MS说,这应该有用。
您能安全地假设您的所有用户都拥有Visual Studio的副本吗?它们都运行相同的版本吗? (我知道,快递版现在是免费的......)如果你继续追求这条道路并且让他们都使用相同版本的VS2008让你的每个人的生活更轻松,你需要教育你的用户基础上的困难。
我宁愿使用make / gcc而不是绕过公园。
答案 3 :(得分:0)
我认为使用nmake是可行的方法 - 不幸的是,VC6是最后一个版本,可以根据项目自动为您创建一个版本。
但是,你说你的项目很简单,所以这不应该是一个主要障碍。
答案 4 :(得分:0)
我建议您使用开源流程。将您的代码发布为VS 2008,并允许使用早期版本的人为这些版本提供解决方案文件。这是开源方式。
答案 5 :(得分:0)
我见过的商业Windows库使用的一个解决方案是将VS版本命名为后缀(例如:Project_VS2005.sln,Project_VS2008.sln等)。您仍然必须保持它们同步,但您不必更改文件路径,包含目录或修改实际的解决方案文件;只保留多个文件,每个文件对应一个支持的VS版本。您必须对项目文件执行相同的操作,但至少您不必更改内容以支持不同的目录结构,除非您希望支持与多个VS版本并排构建,并且在这种情况下你只需要改变每个不同项目文件的输出设置。
不是说这是一个很好的解决方案,而是另一种选择。