如何告诉cmake为源外构建生成不同的默认目标



我如何编写一个接受不同的外源构建的CMakeLists.txt文件?我说的不是调试和发布,而是类似于一个构建用于远程测试,一个用于本地测试,等等。

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

  1. 告诉c生成什么样的配置(例如,cd build_local; cmake -D local ?)
  2. 如何根据配置生成不同的默认目标(即make allmake)编写CMakeLists.txt文件

有人举例或链接到适当的文档?

谢谢!

使用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()命令,因此您的配置的项目可能完全不同于不同的配置。

相关内容

  • 没有找到相关文章

最新更新