使用CMake生成Visual Studio C ++项目文件

我正在开发一个开源的C ++项目,用于在Linux和Windows上编译的代码。 我使用CMake在Linux上构build代码。 为了便于开发设置和政治原因,我必须坚持在Windows上的Visual Studio项目文件/编辑器(例如,我不能切换到Code :: Blocks )。 我看到使用CMake生成Visual Studio文件的说明,如下所示。

你有没有使用CMake之前生成Visual Studio文件? 你的经历如何? 假设我想添加一个新的文件到我的项目中。 这是什么工作stream程?

CMake其实是相当不错的。 最关键的部分是Windows上的每个人都必须记住在加载解决scheme之前运行CMake,并且我们Mac端的每个人都必须记得在make之前运行它。

最难的部分是作为Windows开发人员确保您的结构更改是在cmakelist.txt文件中,而不是在解决scheme或项目文件中,因为这些更改可能会丢失,即使不丢失也不会转移到Mac方也需要他们,Mac的人们需要记住,不要因为相同的原因修改make文件。

这只需要一点思考和耐心,但是一开始就会有错误。 但是如果双方持续融合 ,那么这些问题就会早早出现,人们最终会养成这样的习惯。

不知道它是否与问题直接相关,但我正在寻找如何从cmake项目生成* .sln的答案我发现,可以使用这样的东西:

 cmake -G "Visual Studio 10" 

该示例从inputCMakeLists.txt文件生成所需的VS 2010文件

我们把部门的build设链移到了CMake,我们也有一些内部的路标,因为其他部门使用我们的项目文件,并习惯于将它们导入到他们的解决scheme中。 我们也抱怨CMake没有完全集成到Visual Studio项目/解决schemepipe理器中,因此文件必须手动添加到CMakeLists.txt中; 这是人们习惯的工作stream程中的重大突破。

但总的来说,这是一个非常平稳的过渡。 我们非常高兴,因为我们不必处理项目文件了。

将新文件添加到项目的具体工作stream程非常简单:

  1. 创build该文件,确保它在正确的位置。
  2. 将文件添加到CMakeLists.txt。
  3. build立。

如果任何CMakeLists.txt文件已经改变(和(半)自动重新加载解决scheme/项目),CMake 2.6会自动重新运行。

请记住,如果您正在执行源代码构build,则需要小心,不要在构build目录中创build源文件(因为Visual Studio只知道构build目录)。

正如亚历克斯所说,它工作得很好。 唯一棘手的部分是记住在cmake文件中进行更改,而不是在Visual Studio中进行更改。 所以在所有平台上,工作stream程与使用普通的旧的makefile相似。

但是使用起来相当容易,而且我没有用cmake生成无效文件或类似的东西,所以我不用担心太多。

CMake可以生成非常好的Visual Studio .projs / .slns ,但总是存在需要修改.cmake文件而不是.proj / .sln 。 现在,我们正在处理如下:

  1. 所有源文件都转到/src ,在Visual Studio中可见的文件只是在.filter定义的文件的“链接”。
  2. 程序员添加/删除logging在定义的/src目录上的文件,而不是默认的项目。
  3. 当他完成后,他运行一个脚本,“刷新”各自的.cmake文件。
  4. 他检查代码是否可以在重build的环境中构build。
  5. 他提交了代码。

起初,我们有点害怕它会变成什么样子,但是工作stream程非常好,在每次提交之前都可以看到好的差异,所以每个人都可以很容易地看到他的更改是否正确映射到.cmake文件中。

更重要的是要了解CMake中“解决schemeconfiguration”的缺乏支持( afaik )。 就目前而言,您必须生成两个包含项目/解决scheme的目录 – 每个构buildtypes(debugging,发布等)。 没有直接支持更复杂的function – 换句话说:configuration之间的切换不会给你你所期望的。

CMake无缝地生成Visual Studio项目和解决scheme。 您甚至可以为不同的Visual Studio版本生成项目/解决scheme,而无需对CMake文件进行任何更改。

添加和删​​除源文件只是修改CMakeLists.txt文件,它具有源文件列表并重新生成项目/解决scheme。 甚至有一个globbingfunction来查找目录中的所有来源(尽pipe它应该谨慎使用)。

下面的链接很好地解释了CMake和Visual Studio的具体行为。

CMake和Visual Studio

我开始了我自己的项目,名为syncProj。 文档/从这里下载链接:

https://docs.google.com/document/d/1C1YrbFUVpTBXajbtrC62aXru2om6dy5rClyknBj5zHU/edit# https://sourceforge.net/projects/syncproj/

如果您打算使用Visual Studio进行开发,并且目前只支持C ++。

与其他make系统相比,主要优点是可以实际debugging脚本,因为它是基于C#的。

如果您对syncProj不熟悉,则可以将您的解决scheme/项目转换为.cs脚本,并从此继续进行进一步的开发。

在cmake中,你将需要从头开始编写所有的东西。

这里有很多很棒的答案,但是可能会被Visual Studio中的这个CMake支持取代(2016年10月5日)