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

如何配置CMake&CTest:让make仅编译项目,make test编译并运行测试

解决方案

1. 修改tests/CMakeLists.txt

调整测试可执行文件的构建规则,将其排除在默认构建目标外,同时创建聚合目标统一管理测试编译:

# 创建自定义目标,用于触发所有测试用例的编译
add_custom_target(build_tests)

foreach( APP ${TESTAPPS} )
    # 给测试可执行文件添加EXCLUDE_FROM_ALL属性,避免默认make时编译
    add_executable( "${APP}" EXCLUDE_FROM_ALL "${APP}.c" ${src_files})
    # 将每个测试可执行文件关联到build_tests目标
    add_dependencies(build_tests "${APP}")
    add_test( NAME "${APP}_test" COMMAND "${APP}" )
endforeach( APP ${TESTAPPS} )

2. 修改顶层CMakeLists.txt

让默认的test目标依赖build_tests,确保执行make test时先完成测试编译再运行测试:

# Build tests
mark_as_advanced( BUILD_TESTS )
set( BUILD_TESTS true CACHE BOOL "Tests build target available if true" )
if( BUILD_TESTS )
    enable_testing()
    add_subdirectory( tests )
    # 关联test目标与build_tests,保证测试运行前先完成编译
    add_dependencies(test build_tests)
endif()

效果验证

  • 执行make:仅编译主项目代码,不会构建任何测试用例
  • 执行make test:先编译所有测试用例,然后自动运行所有测试
  • 若仅需编译测试不运行,可执行make build_tests

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 14:42:02