1

我似乎找不到太多关于此的信息,所以也许不可能……或者我使用错误的关键字进行搜索。

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

例如像cmake TEST ..

谢谢

4

2 回答 2

3

当然,您可以使用标志。

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

并像这样调用cmake:

cmake -DTEST=1 ..
于 2012-10-14T22:31:24.203 回答
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 testormake product并且它将仅构建该目标(以及任何依赖项)。

于 2012-10-14T22:37:55.573 回答