CMake CheckCXXCompilerFlag用法(CMake set()函数CMake set函数)(-std=gnu++14`编译选项)

Posted Dontla

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CMake CheckCXXCompilerFlag用法(CMake set()函数CMake set函数)(-std=gnu++14`编译选项)相关的知识,希望对你有一定的参考价值。

文章目录

使用方法

CheckCXXCompilerFlag 是 CMake 内置的一个函数,用于检查编译器是否支持指定的编译选项。它会尝试编译一个简单的测试程序,并将编译结果存储在一个变量中,供后续的条件判断使用。该函数的语法如下:

check_cxx_compiler_flag(flag variable)

其中,flag 是需要检查的编译选项,variable 是存储检查结果的变量名。如果编译器支持该选项,则 variable 的值为 TRUE,否则为 FALSE。在 CMakeLists.txt 文件中调用该函数后,可以通过 $variable 来获取检查结果。

示例

# 使用 CheckCXXCompilerFlag 检查编译器是否支持 -std=gnu++14 参数。
include(CheckCXXCompilerFlag)
check_cxx_compiler_flag(-std=gnu++14 HAS_CXX14)

# 如果编译器支持 -std=gnu++14 参数,则将其添加到 CMAKE_CXX_FLAGS 变量中。
if (HAS_CXX14)
    set(CMAKE_CXX_FLAGS "$CMAKE_CXX_FLAGS -std=gnu++14")
endif()

CMake set函数解析

set(CMAKE_CXX_FLAGS "$CMAKE_CXX_FLAGS -std=gnu++14")

它的语法是 CMake 的 set() 函数,用于设置一个 CMake 变量的值。其中:

CMAKE_CXX_FLAGS 是要设置的变量名,它是 CMake 预定义的变量,表示 C++ 编译器的编译选项。

$CMAKE_CXX_FLAGS 是变量的旧值,也就是当前编译器的编译选项。$ 是 CMake 的变量替换语法,用于获取一个变量的值。

-std=gnu++14 是要添加到编译选项中的新值,表示采用 C++14 标准进行编译。这个选项具体的含义可以参考 C++14 标准的相关文档。

这行代码的作用是将 CMAKE_CXX_FLAGS 变量的值添加上 -std=gnu++14 这个编译选项,表示使用 C++14 标准进行编译。因为 CMAKE_CXX_FLAGS 变量原来的值可能包含一些其他的编译选项,所以在添加新选项时需要使用 $CMAKE_CXX_FLAGS 来获取旧值,并将新选项添加到旧值的末尾。这样做可以保留原有的编译选项,并在其基础上添加新的选项。

注意:如果添加多个-std=gnu++xx选项,以最后一个添加的为准。

关于-std=gnu++14编译选项

因为我的编译器是GCC,我可以在编译器的文档中查找支持的编译选项以及它们的含义:

GCC: https://gcc.gnu.org/onlinedocs/

以上是关于CMake CheckCXXCompilerFlag用法(CMake set()函数CMake set函数)(-std=gnu++14`编译选项)的主要内容,如果未能解决你的问题,请参考以下文章

cmake和makefile区别和cmake指定编译器(cmake -G)

cmake:从内部 .cmake 打印消息

cmake基础教程(13)cmake安装位置前缀CMAKE_INSTALL_PREFIX

make如何指定cmake路径

cmake --- cmake基础

cmake