我似乎找不到太多关于此的信息,所以也许不可能……或者我使用错误的关键字进行搜索。
无论如何,我有一个源目录。假设 Source 中有一个名为 Tests 的文件夹和另一个名为 Products 的文件夹。我有 CMakeLists.txt 文件的通常层次结构,这样我就可以在每个目录和子目录等中构建所有源代码......我想知道的是是否可以使用 cmake 传递命令行参数以便它将仅构建测试文件夹或源文件夹。
例如像cmake TEST ..
谢谢
我似乎找不到太多关于此的信息,所以也许不可能……或者我使用错误的关键字进行搜索。
无论如何,我有一个源目录。假设 Source 中有一个名为 Tests 的文件夹和另一个名为 Products 的文件夹。我有 CMakeLists.txt 文件的通常层次结构,这样我就可以在每个目录和子目录等中构建所有源代码......我想知道的是是否可以使用 cmake 传递命令行参数以便它将仅构建测试文件夹或源文件夹。
例如像cmake TEST ..
谢谢
当然,您可以使用标志。
if(TEST)
include needed folders
else()
do something else
endif()
并像这样调用cmake:
cmake -DTEST=1 ..
您可以将它们创建为不同的目标。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
ormake product
并且它将仅构建该目标(以及任何依赖项)。