在项目中更改 CMAKE

编程入门 行业动态 更新时间:2024-10-16 20:20:30
本文介绍了在项目中更改 CMAKE_CXX_FLAGS的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的 CMakeLists.txt 中有以下内容:

I have the following content in my CMakeLists.txt:

project( Matfile )

SET ( CMAKE_CXX_FLAGS "-std=c++0x" )

set ( SOURCES
      "foo.cpp"
      "bar.cpp"
    )

add_library(
        Matfile
        ${SOURCES}
)

正如您想象的那样,我想要做的是使用标志 -std=c++0x 编译我的 C++ 源代码(我正在使用 gcc 并且我需要 C++11 功能).不幸的是,这不起作用,因为当我使用 cmake 生成 makefile 时,变量 CMAKE_CXX_FLAGS 完全无效.

As you may imagine, what I want to do is to compile my C++ sources using the flag -std=c++0x (I'm using gcc and I need the C++11 features). Unfortunately, this does not work, in the sense that, when I use cmake to generate the makefiles, the variable CMAKE_CXX_FLAGS is completely void.

如何在项目文件中设置这个变量?

How can I set this variable in the project file?

这似乎是一个非常愚蠢的问题,但我花了不少于两个小时试图弄清楚这一点.

It seems to be a very stupid question, but I just spent not less than two houres trying to figure this out.

推荐答案

最直接的解决方案应该是使用 add_compile_options() 如果您使用的是 2.8.12 或更新版本.对于旧版本,您可以滥用"add_definitions().虽然它仅用于添加 -D 标志,但它也适用于任何其他编译器标志.但是,我认为它不应该以这种方式使用,并且可能会在未来的版本中中断.

The most straightforward solution should be using add_compile_options() if you are using version 2.8.12 or newer. For older versions you can "abuse" add_definitions(). While it is only meant for add -D flags, it also works with any other compiler flag. However, I think it is not meant to be used that way and could break in a future version.

add_compile_options(-std=c++0x) # CMake 2.8.12 or newer

add_definitions(-std=c++0x) # CMake 2.8.11 or older

从 CMake 3.3 开始,您还可以使用奇怪的生成器表达式语法使此标志仅适用于特定语言(例如,仅适用于 C 或 C++):

Starting with CMake 3.3 you can also make this flag only apply to a specific language (e.g. only C or C++) using the strange generator expressions syntax:

 add_compile_options($<$<COMPILE_LANGUAGE:CXX>:-std=c++14> $<$<COMPILE_LANGUAGE:C>:-std=c99>)

但是这将 不适用于Visual Studio 生成器,因此请确保仅将其用于 Make/Ninja 生成器或使用 target_compile_options() 在每个目标范围内设置它.

However this will not work with the Visual studio generator, so make sure to only use this for Make/Ninja generators or use target_compile_options() to set it on a per-target scope.

这篇关于在项目中更改 CMAKE_CXX_FLAGS的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

更多推荐

[db:关键词]

本文发布于:2023-03-31 04:44:01,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/795897.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:项目   CMAKE

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!