当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《使用CMake生成VisualStudioC++项目文件》经验,为你挑选了6个好方法。

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

您之前是否使用过CMake生成Visual Studio文件?你的经历怎么样?假设我想在项目中添加一个新文件.这是什么工作流程?



1> Alex..:

CMake实际上非常适合这个.关键部分是Windows方面的每个人都必须记住在加载解决方案之前运行CMake,而我们Mac上的每个人都必须记住在make之前运行它.

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

它只需要一点思考和耐心,但一开始会有错误.但是如果你在双方都使用持续集成,那么这些将会很早就被淘汰出局,人们最终会养成这种习惯.


如果这是真的一次,它不再是.对CMakeLists.txt的任何更改都将导致构建系统的重新生成(visual studio,makefile等的项目文件).在Visual Studio中的工作流程是怎么样的,因为烦人的Visual Studio不会重新生成项目文件,当它检测到的东西已经改变了,而是等待你做一个构建导致一个对话框出现,因为生成需要被中止,重新 - 加载项目文件.

2> Ghita..:

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

cmake -G "Visual Studio 10"

该示例从输入的CMakeLists.txt文件生成所需的VS 2010文件



3> JesperE..:

我们将我们部门的构建链移动到了CMake,自从其他部门使用我们的项目文件以及习惯于将它们导入到他们的解决方案中之后,我们就有了一些内部路障.我们还抱怨CMake没有完全集成到Visual Studio项目/解决方案管理器中,因此必须手动将文件添加到CMakeLists.txt; 这是人们习惯的工作流程中的重大突破.

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

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

    创建文件,确保它在正确的位置.

    将文件添加到CMakeLists.txt.

    建立.

如果任何CMakeLists.txt文件已更改(并且(半)自动重新加载解决方案/项目),CMake 2.6会自动重新运行.

请记住,如果您正在进行源外构建,则需要注意不要在构建目录中创建源文件(因为Visual Studio只知道构建目录).



4> jalf..:

正如亚历克斯所说,它运作良好.唯一棘手的部分是记住在cmake文件中进行任何更改,而不是在Visual Studio中进行.因此,在所有平台上,工作流程与您使用普通旧的makefile类似.

但是它很容易使用,我对cmake生成无效文件或类似的东西没有任何问题,所以我不会太担心.



5> ap-osd..:

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

添加和删​​除源文件只需要修改CMakeLists.txt具有源文件列表的文件并重新生成项目/解决方案即可。甚至还有一个遍历功能,可以在目录中查找所有源(尽管应谨慎使用)。

以下链接很好地说明了CMake和Visual Studio特定的行为。

CMake和Visual Studio



6> Red XIII..:

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

    所有源文件都转到/src,Visual Studio中可见的文件只是在其中定义的"链接" .filter.

    程序员添加/删除记住在定义的/src目录上工作的文件,而不是默认项目的文件.

    当他完成后,他运行一个"刷新"相应.cmake文件的脚本.

    他检查代码是否可以在重新创建的环境中构建.

    他提交了代码.

起初我们有点担心它会如何发展,但是工作流程工作得很好,并且在每次提交之前可以看到很好的差异,每个人都可以很容易地看到他的更改是否在.cmake文件中正确映射.

另一个需要了解的重要事项是CMake中"解决方案配置" 缺乏支持(afaik).就目前而言,您必须使用项目/解决方案生成两个目录 - 每个构建类型一个(调试,发布等).没有直接支持更复杂的功能 - 换句话说:在配置之间切换不会给你你所期望的.


从CMake 2.8.10开始,生成的解决方案具有4种常规构建配置,并且支持定义其他自定义配置.
推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有