CMake工作流程?

Ele*_*ena 6 cmake cmake-gui

我正在学习CMake,我在理解其多步骤工作流程时遇到了问题.到目前为止,我的理解是你:

  • 写一个 CMakeLists.txt
  • cmake从子目录运行以生成构建文件(在我的情况下为Makefile)
  • make

但是,我不明白你应该如何处理不同的目标(Release vs Debug).通过在两个不同的子目录中运行CMake?

另外,我不明白你为什么要编辑CMakeCache.txt(还有一个GUI工具)../configure通过传递不同的选项来模仿你将要实现的目标?

Rei*_*ica 8

你得到的非常正确.该write CMakeLists.txt> cmake> make序列是正确的.

关于不同的配置(调试与发布),您必须区分多配置生成器(Visual Studio,XCode)和单配置生成器(其他所有内容).使用多配置生成器,您可以生成一个包含所有配置的构建系统(例如解决方案文件),并在构建时进行选择.

对于单配置生成器,通过生成不同的构建系统,即通过在不同目录中多次运行CMake(以及具有不同的CMAKE_BUILD_TYPECMake变量值)来获得不同的配置.

所以你会做这样的事情:

> cd my_project/bld/debug
> cmake ../../src -DCMAKE_BUILD_TYPE=Debug
> cd ../release
> cmake ../../src -DCMAKE_BUILD_TYPE=Release
Run Code Online (Sandbox Code Playgroud)

关于编辑缓存(通常通过CMake GUI或ccmake):你再次正确,这很大程度上对应于./configure从AutoMake世界传递选项.这将是新下载项目的典型工作流程(使用CMake GUI):

  1. 运行CMake GUI,将其指向所需的源目录(输入)和二进制目录(输出)
  2. 配置.这将使用项目指定的默认值填充缓存.如果CMake无法自动找到项目的某些依赖项,则会以错误结束.
  3. 检查缓存,更改您不喜欢的任何值(例如编译选项),填写任何缺少的选项(CMake无法找到的库的路径等)
  4. 重复步骤2和3,直到您对项目的设置感到满意为止.
  5. 生成构建系统.
  6. 退出CMake的GUI和建设使用适当的构建工具.