指定 CTestTestfile.cmake 的目的地



执行cmake生成ctest输入时,如何直接指定cmake生成的CTestTestfile.cmake的目标目录?具体来说,我的测试套件是一个独立的cmake项目。我目前使用include()将其添加到主cmake项目中,但更合适的方法是使用add_subdirectory().但是,add_subdirectory()build目录中的子项目目录中安装CTestTestfile.cmake,但我需要它build/以便ctest找到它。

我在位于test_project中的文件CTestList.cmake中设置了测试宏。此文件包含在test_project/CMakeLists.txt中的构建中:

include(CTest)
include(${CMAKE_CURRENT_LIST_DIR}/CTestList.cmake)

include()

project/
|-- CMakeLists.txt
|-- src/
|-- test_project/
`-- build/
|-- CTestTestfile.cmake
`-- test_project/

add_subdirectory()

project/
|-- CMakeLists.txt
|-- src/
|-- test_project/
`-- build/
`-- test_project/
`-- CTestTestfile.cmake

CMakeincludeadd_subdirectory命令非常不同。

虽然include命令的工作方式类似于 C 和 C++ 的#include– 将包含文件的内容加载到它出现的文件中 – 但add_subdirectory会向构建添加一个子目录。这意味着当您使用add_subdirectory子目录CMakeLists.txt内的变量将成为不同作用域的一部分,并且CMAKE_CURRENT_BINARY_DIR变量的值也将不同。只需将以下行添加到test_project/CMakeLists.txt,然后尝试include它或通过add_subdirectory添加它:

message(STATUS "The files will be generated into: " ${CMAKE_CURRENT_BINARY_DIR})

enable_testing允许测试当前目录及以下目录。因此,当您使用add_subdirecory而不是include时,当前目录意味着build/test_project/– 如上所述。

要确保CTestTestfile.cmake也将build目录中创建,只需将额外的enable_testing命令添加到顶级CMakeLists.txt即可。

相关内容

  • 没有找到相关文章

最新更新