我似乎找不到太多关于此的内容,所以也许这是不可能的......或者我正在使用错误的关键字进行搜索。
无论如何,我有一个源目录。假设Source中有一个名为Tests的文件夹,另一个名为Products。我有通常的CMakeLists.txt文件层次结构,以便我可以在每个目录和子目录等中构建所有源代码...我想知道的是,是否可以使用cmake传递命令行参数,以便它将只构建测试文件夹或源文件夹。
e.g。类似于cmake TEST ..
由于
答案 0 :(得分:3)
当然你可以使用旗帜。
if(TEST)
include needed folders
else()
do something else
endif()
然后像这样打电话给cmake:
cmake -DTEST=1 ..
答案 1 :(得分:2)
您可以将它们创建为不同的目标。 CMake将配置所有这些,但您可以运行make test
或make 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 test
或make product
,它只会构建该目标(以及任何依赖项)。