You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让CMake的test目标依赖默认all目标?

解决CMake中测试目标依赖全量构建的问题

CMake中的test是CTest提供的伪目标,并非实际的CMake构建目标,所以直接用add_dependencies(test all)会报错。以下是两种可行的解决方案:

方案一:自定义带依赖的测试执行目标

在项目根目录的CMakeLists.txt中添加一个自定义目标,让它先构建全量目标all,再执行测试:

# ${PROJECT_SOURCE_DIR}/CMakeLists.txt
cmake_minimum_required(VERSION 3.15)
project(hello-world VERSION 0.0.1 LANGUAGES C CXX)

enable_testing()
# ... 其他配置 ...

# 自定义目标:先构建all,再运行测试
add_custom_target(run-tests
    COMMAND ${CMAKE_CTEST_COMMAND} --output-on-failure  # 执行测试并显示失败详情
    DEPENDS all  # 依赖全量构建目标
    WORKING_DIRECTORY ${CMAKE_BINARY_DIR}  # 指定测试运行的工作目录
)

之后只需执行构建命令(如make run-tests或ninja run-tests),就会自动先完成全量构建,再运行所有测试。

方案二:通过ctest参数强制先构建

如果希望保持使用ctest命令,可直接在调用时添加--build-target all参数,强制先完成全量构建再执行测试:

ctest --build-target all --output-on-failure

可以将该命令封装成脚本,或是在IDE的运行配置中直接配置使用。

补充说明

  • 你定义的测试可执行文件my-test默认已属于all目标的一部分(add_executable生成的目标会自动加入全量构建),核心需求就是确保测试执行前触发全量构建。
  • 自定义目标的方式灵活性更高,可根据需求调整测试命令参数,比如只运行特定测试、生成更详细的测试报告等。

内容的提问来源于stack exchange,提问作者StoneThrow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 10:29:58