CMake使用CTest时如何设置测试生成文件输出到全局target目录
CTest测试生成文件输出到根目录target的配置方案
你可以通过修改CMake的全局输出目录规则实现需求,操作步骤如下:
- 在**项目根目录的
CMakeLists.txt**中,add_subdirectory(test)配置之前添加全局输出目录规则,示例如下:
cmake_minimum_required(VERSION 3.10) project(your_project) # 单配置生成器(Makefile、Ninja等)通用全局输出配置 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/target) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/target) set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/target) # 适配多配置生成器(Visual Studio、Xcode等)的输出配置 foreach(CONFIG ${CMAKE_CONFIGURATION_TYPES}) string(TOUPPER ${CONFIG} CONFIG_UPPER) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_${CONFIG_UPPER} ${CMAKE_SOURCE_DIR}/target) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_${CONFIG_UPPER} ${CMAKE_SOURCE_DIR}/target) set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${CONFIG_UPPER} ${CMAKE_SOURCE_DIR}/target) endforeach() add_subdirectory(src) add_subdirectory(test)
- 检查
test子目录下的CMakeLists.txt,删除给测试目标单独设置RUNTIME_OUTPUT_DIRECTORY属性的配置,避免覆盖全局规则。 - 清理原有构建缓存目录,重新执行cmake生成、构建流程,所有测试生成文件就会输出到根目录的
target文件夹下,CTest会自动识别新路径的测试程序,无需额外修改CTest配置。
内容的提问来源于stack exchange,提问作者Christopher Clark
相关产品推荐
相关产品推荐

