0

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

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

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

有人有适当文档的示例或链接吗?

谢谢!

4

1 回答 1

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

于 2015-07-10T11:32:51.383 回答