1. 编译参数
项目中的CMake编译参数一直参照Muduo
进行设置.
Muduo的CMakeLists.txt中,MAKE_CXX_FLAGS
设置较为清晰明了,因此一直在项目中沿用。
set(CXX_FLAGS
-g
# -DVALGRIND
-DCHECK_PTHREAD_RETURN_VALUE
-D_FILE_OFFSET_BITS=64
-Wall
-Wextra
-Werror
-Wconversion
-Wno-unused-parameter
-Wold-style-cast
-Woverloaded-virtual
-Wpointer-arith
-Wshadow
-Wwrite-strings
-march=native
-rdynamic
)
string(TOUPPER ${CMAKE_BUILD_TYPE} BUILD_TYPE)
CMAKE_CXX_FLAGS
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
:含义:将所有符号添加到动态符号表中。
作用:使编译器将所有符号添加到动态符号表中,通常用于调试和动态链接。