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)