CMake设置编译参数
1. 编译参数
项目中的CMake编译参数一直参照Muduo进行设置.
Muduo的CMakeLists.txt中,MAKE_CXX_FLAGS设置较为清晰明了,因此一直在项目中沿用.
1 set(CXX_FLAGS 2 -g 3 # -DVALGRIND 4 -DCHECK_PTHREAD_RETURN_VALUE 5 -D_FILE_OFFSET_BITS=64 6 -Wall 7 -Wextra 8 -Werror 9 -Wconversion 10 -Wno-unused-parameter 11 -Wold-style-cast 12 -Woverloaded-virtual 13 -Wpointer-arith 14 -Wshadow 15 -Wwrite-strings 16 -march=native 17 # -MMD 18 -rdynamic 19 ) 20 21 string(TOUPPER ${CMAKE_BUILD_TYPE} BUILD_TYPE) 22 CMAKE_CXX_FLAGS 23 #string(REPLACE ";" " " CMAKE_CXX_FLAGS "${CXX_FLAGS}") 24 string(REPLACE ";" " " CMAKE_CXX_FLAGS "${CXX_FLAGS}")
需要注意的是,以上编译参数均是针对GCC。
如果使用Clang编译器,需要自行进行替换。
2. 编译标志解释
-
-g
:-
含义:生成调试信息。
-
作用:使编译器生成调试信息,以便使用调试器(如
gdb
)进行调试。
-
-
-DVALGRIND
(已注释):-
含义:定义宏
VALGRIND
。 -
作用:通常用于启用与Valgrind相关的代码部分。由于被注释掉了,所以当前没有效果。
-
-
-DCHECK_PTHREAD_RETURN_VALUE
:-
含义:定义宏
CHECK_PTHREAD_RETURN_VALUE
。 -
作用:通常用于启用与检查pthread函数返回值相关的代码部分。
-
-
-D_FILE_OFFSET_BITS=64
:-
含义:定义宏
_FILE_OFFSET_BITS
为64。 -
作用:使文件操作使用64位文件偏移量,以支持大文件。
-
-
-Wall
:-
含义:启用所有常见的警告。
-
作用:使编译器生成所有常见的警告信息,帮助发现潜在的问题。
-
-
-Wextra
:-
含义:启用额外的警告。
-
作用:使编译器生成更多的警告信息,进一步帮助发现潜在的问题。
-
-
-Werror
:-
含义:将所有警告视为错误。
-
作用:使编译器在遇到警告时停止编译,强制开发者修复所有警告。
-
-
-Wconversion
:-
含义:启用类型转换警告。
-
作用:使编译器生成类型转换相关的警告,帮助发现潜在的类型转换问题。
-
-
-Wno-unused-parameter
:-
含义:禁用未使用参数的警告。
-
作用:使编译器不生成未使用参数的警告,通常用于函数参数未使用的情况。
-
-
-Wold-style-cast
:-
含义:启用旧式类型转换警告。
-
作用:使编译器生成旧式类型转换(如C风格的类型转换)相关的警告,鼓励使用C++风格的类型转换(如
static_cast
、dynamic_cast
等)。
-
-
-Woverloaded-virtual
:-
含义:启用重载虚函数的警告。
-
作用:使编译器生成重载虚函数相关的警告,帮助发现潜在的虚函数重载问题。
-
-
-Wpointer-arith
:-
含义:启用指针算术警告。
-
作用:使编译器生成指针算术相关的警告,帮助发现潜在的指针算术问题。
-
-
-Wshadow
:-
含义:启用变量遮蔽警告。
-
作用:使编译器生成变量遮蔽(即局部变量遮蔽了全局变量或外层作用域的变量)相关的警告,帮助发现潜在的变量遮蔽问题。
-
-
-Wwrite-strings
:-
含义:启用字符串常量转换警告。
-
作用:使编译器生成字符串常量转换为
char*
相关的警告,鼓励使用const char*
。
-
-
-march=native
:-
含义:生成针对本地机器架构优化的代码。
-
作用:使编译器生成针对当前机器架构优化的代码,以提高性能。
-
-
-rdynamic
:-
含义:将所有符号添加到动态符号表中。
-
作用:使编译器将所有符号添加到动态符号表中,通常用于调试和动态链接。
-
> PS:
> 如果您觉得我的文章对您有帮助,请关注我的[个人博客网站](https://www.2tuan.work)
> 本文同步发布于个人博客网站,[《C++项目中CMake推荐编译参数设置》](https://www.2tuan.work/archives/CMake-recommended-compilation-parameter-settings-in-C%2B%2B-projects)。