CMake,构建选项

时间:2012-10-14 22:27:51

标签: linux command-line cmake

我似乎找不到太多关于此的内容,所以也许这是不可能的......或者我正在使用错误的关键字进行搜索。

无论如何,我有一个源目录。假设Source中有一个名为Tests的文件夹,另一个名为Products。我有通常的CMakeLists.txt文件层次结构,以便我可以在每个目录和子目录等中构建所有源代码...我想知道的是,是否可以使用cmake传递命令行参数,以便它将只构建测试文件夹或源文件夹。

e.g。类似于cmake TEST ..

由于

2 个答案:

答案 0 :(得分:3)

当然你可以使用旗帜。

if(TEST)
 include needed folders
else()
 do something else
endif()

然后像这样打电话给cmake:

cmake -DTEST=1 ..

答案 1 :(得分:2)

您可以将它们创建为不同的目标。 CMake将配置所有这些,但您可以运行make testmake product。一个例子是:

project(myProject)

add_subdirectory(tests)
add_subdirectory(products)

add_executable(test EXCLUDE_FROM_ALL ${TEST_SRC_FILES})
add_executable(product EXCLUDE_FROM_ALL ${PRODUCT_SRC_FILES})

在每个子目录中,您将拥有一个构建源文件变量的CMakeLists.txt。 EXCLUDE_FROM_ALL表示只键入make不会构建测试或产品,但您可以决定是否要这样做。

要构建,您可以执行make testmake product,它只会构建该目标(以及任何依赖项)。