CMake指令解析 set(CMAKE_CXX_FLAGS “$ENV{CXXFLAGS} -rdynamic -O3 -fPIC -ggdb -std=c++11 -Wall -Wno-deprec

完整代码

set(CMAKE_CXX_FLAGS "$ENV{CXXFLAGS} -rdynamic -O3 -fPIC -ggdb -std=c++11 -Wall -Wno-deprecated -Werror -Wno-unused-function -Wno-builtin-macro-redefined -Wno-deprecated-declarations")

1、CMAKE_CXX_FLAGS

这种大写的变量,一般都是CMake预定义的内建变量,且他们是全局的。该变量可用于设置编译选项。直接使用set修改其值即可。

除了修改该变量的值之外,还可以通过add_compile_options命令来设置编译选项。它们的区别是:
add_compile_options命令添加的编译选项是针对所有编译器的(包括c和c++编译器)
CMAKE_C_FLAGSCMAKE_CXX_FLAGS变量则是分别只针对c和c++编译器

2、$ENV{}

$ENV{}用于获取环境变量设置环境变量的方法是:

set(ENV{变量名})

3、CXXFLAGS

CXXFLAGS是C++编译器的编译选项。
CMake指令解析 set(CMAKE_CXX_FLAGS “$ENV{CXXFLAGS} -rdynamic -O3 -fPIC -ggdb -std=c++11 -Wall -Wno-deprec_第1张图片

4、-rdynamic

-rdynamic编译选项通知链接器将所有符号添加到动态符号表中。(目的是能够通过使用 dlopen 来实现向后跟踪)
gcc选项-g与-rdynamic的异同

5、-O3

-O3是一个优化选项,告诉编译器优化我们的代码。
gcc -O0 -O1 -O2 -O3 四级优化选项及每级分别做什么优化

6、-fPIC

-fPIC 作用于编译阶段,告诉编译器产生与位置无关代码,即,产生的代码中,没有绝对地址,全部使用相对地址,故而代码可以被加载器加载到内存的任意位置,都可以正确的执行。这正是共享库所要求的,共享库被加载时,在内存的位置不是固定的。
gcc编译参数-fPIC的一些问题

7、-ggdb

-ggdb选项使编译器生成gdb专用的更为丰富的调试信息。
gcc 的 -g 和 -ggdb 选项

8、-std=c++11

-std=c++11设置为使用C++11标准

9、-Wall

-Wall选项告诉编译器 编译后显示所有警告。
gcc中的-w -W和-Wall选项

10、-Wno-deprecated

不要警告使用已弃用的功能

11、-Werror

告诉编译器视所有警告为错误,出现任何警告立即放弃编译

12、-Wno-unused-function

关闭 函数被定义了但没有被使用 而产生的警告,即,不使用的函数不警告。

13、-Wno-builtin-macro-redefined

如果某些内置宏被重新定义,请不要警告。这抑制了警告的重新定义__TIMESTAMP__,TIMEDATEFILE,和__BASE_FILE__。

14、-Wno-deprecated-declarations

关闭使用废弃API的警告。
gcc警告选项汇总,这篇文章贼全面

你可能感兴趣的:(CMake,c++,开发语言)