CheckCXXCompilerFlag或CheckCCompilerFlag一次检查一组标志

时间:2014-05-07 12:59:59

标签: makefile cmake

我从cmake开始,我发现这个模块带有这个宏/ s,文档说这个宏正在检查1标志,但我也发现了一组正常的标志与使用1个标志时一样好用,例如

include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("-std=c++11 -O3 -v" HAS_FLAG)
if (HAS_FLAG)
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -O3 -v")
endif()

这对我来说很有用,因为它很容易识别出我为给定平台或编译器设置标志的位置,1逐1检查很容易过于繁琐且冗长而且非常方便。

这是写CMakeLists.txt的好方法吗?一次检查多个标志有可能存在缺陷吗?

2 个答案:

答案 0 :(得分:1)

除此之外,如果你的支票失败,你将无法确定哪个特定的旗帜造成了它 - 不,没有缺点。

答案 1 :(得分:0)

对此进行扩展;如果要确保某个标志不会产生警告,则可以这样指定第一个参数(对于clang / gcc):

check_cxx_compiler_flag("-Werror <flag>" <variable>)