我如何编写一个接受不同的外源构建的CMakeLists.txt
文件?我说的不是调试和发布,而是类似于一个构建用于远程测试,一个用于本地测试,等等。
例如:如果我进入build_local
构建目录并运行make
,我希望为本地配置编译源代码。如果我在build_production
构建目录中运行make
,我希望使用不同的配置编译源代码。我知道我需要的是源外构建。我只是不太明白如何:
- 告诉c生成什么样的配置(例如,
cd build_local; cmake -D local
?) - 如何根据配置生成不同的默认目标(即
make all
或make
)编写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()
命令,因此您的配置的项目可能完全不同于不同的配置。