为 CTestTestfile.cmake 指定目的地
specify destination for CTestTestfile.cmake
执行cmake
生成ctest
输入时,如何直接指定cmake
生成的CTestTestfile.cmake
的目标目录?具体来说,我的测试套件是一个独立的cmake项目。我目前使用 include()
将它添加到主 cmake
项目中,但更合适的方法是使用 add_subdirectory()
。然而,add_subdirectory()
安装CTestTestfile.cmake
在build
目录下的子项目目录中,但我需要在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
CMake
的include
and the add_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
.
执行cmake
生成ctest
输入时,如何直接指定cmake
生成的CTestTestfile.cmake
的目标目录?具体来说,我的测试套件是一个独立的cmake项目。我目前使用 include()
将它添加到主 cmake
项目中,但更合适的方法是使用 add_subdirectory()
。然而,add_subdirectory()
安装CTestTestfile.cmake
在build
目录下的子项目目录中,但我需要在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
CMake
的include
and the add_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
.