cuốn sách gpt4 ai đã làm

unit-testing - CMake:目标 "test"不构建测试,目标 "all"构建测试

In lại Tác giả: Walker 123 更新时间:2023-11-28 20:36:28 35 4
mua khóa gpt4 Nike

我创建了一个基于命令行可移植脚本的工业化不可知构建系统,可用于快速构建多个依赖项目,而不必依赖特定的 IDE 或构建工厂。它是不可知的,因为它不是基于单个构建引擎。我使用 cmake 创建了第一个版本,因为我的项目主要是 C++,但它会发展(例如包括 gradle 或其他)。也就是说,我并不以 CMake 为中心,它只是一个实现目标的工具,易于移植的 C++ 项目构建。我以前想到了 BJam,如果有更多文档,我会保留它。

因此,我非常依赖 CMake 来执行构建和单元测试。截至今天,我意识到测试是在“所有”目标下构建的,并在“测试”目标下运行。

使用 CMake 2-(以及 - 这里例如 - 一个 Unix Makefiles 生成器):

make all # Build project AND tests
make test # Run tests

使用 CMake 3+ 和任何生成器:

cmake --build . --target all # Build project AND tests
cmake --build . --target test # Run tests

我想知道是否有人知道将“构建项目”阶段与“构建测试”阶段分开的方法(也是因为在我的构建系统中加入测试构建和运行测试感觉比反过来)。

重要的精确性:我不想用一种或另一种愿景来引导项目(通过翻转 BUILD_TESTING)。这个想法是有 3 个阶段,例如:

cmake --build . --target  # 1. Build project only
cmake --build . --target # 2. Build tests
cmake --build . --target # 3. Run tests

如果我选择不运行测试,我可以直接从上面的阶段 1 进行安装,但是运行阶段 3 会触发之前的依赖阶段。

有什么线索吗? (如果没有,我怀疑我将不得不直接询问 CMake 开发人员......)

提前致谢。问候。

câu trả lời hay nhất

假设您为构建测试的可执行文件选择 build_tests 目标,为运行它们选择 run_tests 目标:

  1. 定义目标:

    add_custom_target(build_tests)
    # 'run_tests' triggers 'ctest'.
    add_custom_target(run_tests COMMAND ${CMAKE_CTEST_COMMAND})
    # 'run_tests' implies 'build_tests'
    add_dependencies(run_tests build_tests)
  2. 创建测试的可执行文件,因此它们不会默认构建,而是使用 build_tests 目标构建。

    # Do not build 'test1' by default
    add_executable(test1 EXCLUDE_FROM_ALL ...)
    # 'build_tests' implies (among other things) building 'test1'
    add_dependencies(build_tests test1)

关于unit-testing - CMake:目标 "test"不构建测试,目标 "all"构建测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52524480/

35 4 0
Walker 123
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress