使用多个 -DCMAKE_CXX_FLAGS 选项编译 CMake

Posted

技术标签:

【中文标题】使用多个 -DCMAKE_CXX_FLAGS 选项编译 CMake【英文标题】:compiling CMake with multiple -DCMAKE_CXX_FLAGS options 【发布时间】:2016-01-20 05:51:48 【问题描述】:

我正在用一些默认选项编译 CMake,第一个是 -DCMAKE_CXX_FLAGS=-std=c++11

使用 CMake 的其他编译也抱怨需要 C++14 的警告。

是否可以为这个标志添加多个选项,例如-DCMAKE_CXX_FLAGS=-std=c++11:c++14

【问题讨论】:

【参考方案1】:

不,您不能为 C++ 标志传递多个选项。 无论如何,您的示例的含义是什么?使用 C++11 或 C++14,有什么可用的?如果两者都适用,使用较高的?无论您使用 C++11 还是 C++14 功能,都需要编译器至少处于正确模式。

如果您为您的项目编写自己的 CMakeLists.txt,您可以使用 CMake 检查支持的 C++1/C++14 功能,也可以使用 can try accepted flags and choose the most recent one。 对于最近的 CMake 版本,您可以通过 CXX_STANDARD 属性为每个目标设置所需的 C++ 模式,请参阅 https://cmake.org/cmake/help/v3.4/prop_tgt/CXX_STANDARD.html

【讨论】:

我为第三个程序编译了两个依赖项,一个需要 c++11,另一个需要 c++14,所以根据您的回复,我似乎需要两个 cmake 构建。 为什么不用 C++14 构建两个第三方程序? 我在发布说明,第一个必须设置 c++11,第二个需要 c++14 功能。我不知道为什么第一个必须有 c++11,因此我的问题。我将尝试使用 C++14 并希望通过使用更高版本不会出现无法预料的问题。谢谢艺术。

以上是关于使用多个 -DCMAKE_CXX_FLAGS 选项编译 CMake的主要内容,如果未能解决你的问题,请参考以下文章

使用多个选项按字段对 Drupal 视图进行分组 - 仅显示一个字段

使用 jQuery 打开多个选项卡

在 ViewPager 的多个选项卡中使用单个片段

如何在无法输入文本的情况下在 Select2 中使用“多个选择框”选项?

使用多个参数解析命令行选项 [getopt?]

仅使用一个视图控制器的具有多个选项卡的选项卡栏