【发布时间】:2018-04-19 14:28:50
【问题描述】:
我有一个基于 CMake 的 C++ 项目,我需要将它集成到 CI/CD 管道中。管道有两个步骤,一个用于构建,另一个用于测试。在 Docker 容器中创建这个环境就像一个魅力,但会产生一个 2GB 的容器。所以我正在尝试实现一个多阶段的 Docker 构建,我将可执行文件复制到一个 Alpine 基础映像中。除了 cmake/ctest 功能外,所有这些都有效。我想公开将执行 CMake 生成目标的命令“make test”。
这是 CMake 为运行 ctest 创建的目标。
# Targets provided globally by CMake.
# Special rule for the target test
test:
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running tests..."
/usr/bin/ctest --force-new-ctest-process $(ARGS)
.PHONY : test
我想不通的问题是 ctest 从哪里获取测试配置。当我发出
ctest -N
在容器中它没有显示任何测试。
寻找 CMake 的 SME 来指导我这应该如何工作。
【问题讨论】:
-
ARGS 应该是 CMake 生成的同一个 Makefile 中的一个变量
-
不幸的是,情况似乎并非如此。
-
我在this answer 中找到了一个引用,即ARGS 旨在将选项从命令行传递给
ctest,与ARGS='your ctest options here'一样 -
嗯,看来我的问题不是 ARGS 问题。我不需要将参数传递给 ctest,我需要将测试配置传递给 ctest。现在,ctest -N 显示了 0 个测试。我需要编辑问题。
-
我想你的 CMakeLists.txt 中有正确的
add_test()行
标签: c++ cmake ctest docker-multi-stage-build