CMake:生成忽略错误的 Unix Makefile

Posted

技术标签:

【中文标题】CMake:生成忽略错误的 Unix Makefile【英文标题】:CMake: Generate Unix Makefiles which ignore errors 【发布时间】:2019-09-27 19:27:11 【问题描述】:

在 Unix Makefile 中,我可以在配方行前加上 - 以忽略将发生的任何错误(如 Errors in Recipes 中所述)。

hello_world: hello_world.cxx
    -$(CXX) $(CXXFLAGS) $^ -o $@

我将我的 Makefile 转换为 CMake:

cmake_minimum_required(VERSION 3.0)
project(HelloWorld)

add_executable(hello_world hello_world.cxx)

然后运行cmake,生成的Makefile看起来很好,除了缺少-

是否可以使用 CMake 生成忽略错误的 Unix Makefile(在配方行前加上 -)? 最好的办法是按目标级别指定它。我知道我可以运行 make -i 来获得相同的行为,但这并不方便。

【问题讨论】:

但是如果编译器报错,导致的可执行文件将不会被创建。您想要的行为的用例是什么? @Tsyvarev 我有一组代码示例:一些有目的地显示编译器错误。因此,当一个人编译所有示例时,我不想停止整个过程。 【参考方案1】:

你不能。

make 旨在为用户提供对其运行的命令的精细控制。 CMake 的底层命令应该总是成功的。

作为 hack,您可以生成 makefile 并运行 make --ignore-errors

但我建议将您的每个示例都制作成一个单独的项目,然后从外部脚本运行它们。

【讨论】:

以上是关于CMake:生成忽略错误的 Unix Makefile的主要内容,如果未能解决你的问题,请参考以下文章

带有 XCode 目标的 CMake,生成忽略发布配置的调试符号设置

让 Jenkins 忽略 cmake 错误

CMake 错误:CMake 无法找到与“Unix Makefiles”对应的构建程序。 CMAKE_MAKE_PROGRAM 未设置

初见 cmake

cmake 属性 VS_USER_PROPS 静默忽略

为什么要使用CMake?