如何告诉cmake为out-of-source-builds生成不同的默认目标?

时间:2015-07-10 11:00:17

标签: cmake out-of-source

如何编写接受不同源外构建的CMakeLists.txt文件?我不是在谈论Debug和Release,而是更多关于一个用于远程测试的构建,用于本地测试等等。

例如:如果我进入build_local构建目录并运行make我希望为本地迁移编译源代码。如果我在make构建目录中运行build_production,我想使用不同的配置编译源代码。我知道源代码构建是我需要的。我只是不太明白如何:

  1. 告诉cmake要生成哪种配置(例如cd build_local; cmake -D local?)
  2. 如何编写CMakeLists.txt文件,使其生成不同的默认目标(即make allmake),具体取决于配置
  3. 是否有人提供相应文档的示例或链接?

    谢谢!

1 个答案:

答案 0 :(得分:2)

使用if命令,您可以使用不同的含义填充默认目标(和其他),具体取决于配置。

<强>的CMakeLists.txt

...
option(LOCAL "Build local-testing project" OFF)
if(LOCAL)
    add_executable(program_local local.c)
else()
    add_executable(program_remote remote.c)
endif()

本地构建:

cd build_local
cmake -DLOCAL=ON ..
make
...

远程构建:

cd build_remote
cmake ..
make

if分支机构中,您甚至可以使用不同的add_subdirectory()命令,因此已配置的项目可能因不同的配置而完全不同。