g-var.com | G-VAR's Blog

Recent Posts

Full Tag Index

Posts in “Cmake”

[译]CMake与Visual Studio

Mon, Jul 25, 2016
最近在研究一个用CMake而生成的Visual Studio工程,修改项目属性比较艰难,有些时候还需要手动修改.vcxproj文件。遂想研究研究CMake,Google时碰到这么一篇CMake and Visual Studio的文章,想通过翻译的过程来加深学习。 转载请注明出处! 译文链接:CMake与Visual Studio 英文原文:CMake and Visual Studio CMake可以无缝地生成Visual Studio的解决方案。这篇文章会将CMake命令映射到Visual Studio IDE上,为了更容易学习会附上一个例子。此篇文章主要倾向于使用Visual Studio的C++开发者。这里的大多数引用都是基于Visual Studio 2010的,但应该也会同样适用于其他版本。大家可以从前言CMake for Visual Studio Developers开始阅读。注:这篇前言就不翻译了。 介绍 先简单的介绍一段关于CMake理念的背景。通常源文件应该被视为可以由开发者显式修改的任何文件。另外,可以从源文件持续生成的任何东西都应被视为构建过程的输出。每次构建总是会生成大量的临时或中间文件,为了避免生成的文件会弄乱实际的源文件,建议在源文件之外进行构建。 除了像.obj这样典型的中间文件,Visual Studio还会生成更多的临时文件,包括.sln、.sbr、.suo、.vcxproj.user、.vcxproj.filters。这些文件不需要(也不应该)被上传到源码库中,因为它们有的时候会非常大,并且这些文件还是用户特定的文件。 Visual Studio的开发者可能会将工程文件.vcproj视为”源”文件,因为它涉及到添加、删除文件以及修改文件的依赖等。然而,通过CMake你可以将工程文件也视为中间文件,因为CMake会自动生成它,并建议将其放置在源文件目录之外。 在CMake的构建系统中,构建的”规则”或者是”项目的设置”等都会被定义在称之为CMakeLists.txt的文本文件中。 Visual Studio到CMake的映射 Visual Studio项目的一些常见的操作和设置,以及它们与CMake的对应关系简要地罗列在下面的列表里。(注:表的内容就不翻译了) 例子 CMake Tutorial就是一个非常简单的例子。如果你对基本概念还不太清楚,请去该页面进行参考。这里的例子是个改进版本,用以展示常在Windows下使用的某些具体内容。 示例代码可以通过GitHub获得。而对于那些对Github不太熟悉的人,我将同样的代码打包成了7z文件。鼠标右键点击tutorial-7z.jpg,另存到硬盘上,然后将其重命名为Tutorial.7z,并将文件解压就可以获得源码了。 源码结构 CMake-VisualStudio-Example |---app | |---CMakeLists.txt | |---main.cxx |---math | |---advanced | | |---AdvancedFunctions.cxx | | |---AdvancedFunctions.h | |---simple | | |---SimpleFunctions.cxx | | |---SimpleFunctions.h | |----CMakeLists.txt | |---MathExports.h |---CMakeLists.txt |---TutorialConfig.h.in 执行CMake 如前所述,对于源外构建的建议,需要创建一个目录来存放由CMake生成的必须的Visual Studio项目文件和大量的CMake的特定文件。