1. gdb 调试时出现:value optimized out http://dsl000522.blog.sohu.com/180439264.html
2. boost::format("format-string")% arg1 % arg2 % ... % argN ;
format-string为要格式化的字符串
boost::format key_form("%016X:%08X%02X%02X%d") 016X 为16位对齐
https://blog.csdn.net/racaljk/article/details/19241369
3. cmake相关命令(CmakeLists.txt文件中写的代码)
3.2 常用变量
CMAKE_CURRENT_SOURCE_DIR : 当前处理的CMakeLists.txt 所在路径
EXECUTABLE_OUTPUT_PATH : 最终二进制结果的存放目录,常见用法:SET(EXECUTABLE_OUTPUT_PATH ./bin)
LIBRARY_OUTPUT_PATH :设置.so文件的存放目录,常见用法SET(LIBRARY_OUTPUT_PATH ./lib)
3.2 编译代码
1.INCLUDE_DIRECTORIES : 添加头文件目录
2.AUX_SOURCE_DIRECTORY(<dir> <variable>) :查找指定目录下的所有源文件,然后将结果存进指定
的变量名A,这样,在最终ADD_EXECUTABLE(可执行文件Demo ${A}),以上两步操作的意思是:Cmake会将<dir>目录下所有源文件的文件名赋值给变量A,在指示变量A中的源文件需要编译成为一个名为Demo的可
执行文件
3.CMAKE_MINIMUM_REQUIRED(VERSION 2.6) :指定运行此配置文件所需的Cmake的最低版本
4.PROJECT(target):项目名称
5.ADD_EXECUTABLE(Demo main.cc) : 将名为main.cc的源文件编译成一个名称为Demo 的可执行文件
6.IF(CMAKE_BUILD_TYPE STREQUAL "Debug") :条件编译
SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -D_FILE_OFFSET_BITS=64 -D_LARGE_FILE -O0 -w -g -ggdb -std=c++0x")
add_definitions(-DXXX_MODE)
ELSE(CMAKE_BUILD_TYPE STREQUAL "Debug")
SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -D_FILE_OFFSET_BITS=64 -D_LARGE_FILE -O3 -w -g -std=c++0x")
add_definitions(-DRELEASE_MODE)
ENDIF(CMAKE_BUILD_TYPE STREQUAL "Debug" --- 可有可无)
7.SET(BASE CMAKE_CURRENT_SOURCE_DIR/../) : 设置变量目录
8.TAEGET_LINK_LIBRARIES(<target> [item1] [item2][...] [[debug|optimized|general] <item>]):指令中的<target>是指通过ADD_EXECUTABLE()和ADD_LIBRARY()指令生成已经创建的目标文件。
而[item]表示库文件没有后缀的名字。默认情况下,库依赖项是传递的。当这个目标链接到另一个目标时,
链接到这个目标的库也会出现在另一个目标的连接线上。这个传递的接口存储在interface_link_libraries的目标属性中,可以通过设置该属性直接重写传递接口。常见用法:TARGET_LINK_LIBRARIES(data_center_consumer ${LIBRARIES})
9.add_definitions() :Adds -D define flags to the compilation of source files
为源文件的编译添加由-D 定义的标志
add_definitions(-DFOO -DBAR ...)为当前路径以及下层路径的目标加入编译器命令行定义(定义在命令调用之前或之后被添加,注:也就是不确定)。这个命令可以用来添加任何标志,但是它的原意是用来增加预处
理器的定义(查看 add_compile_options() 命令增加其它的定义)。那些以 -D 或 /D 开头的标志,看起来像预
处理器定义的flag,会被自动加到当前路径的 COMPILE_DEFINITIONS 属性中。为了后向兼容,非简单值
(non-trival,指的是什么?——译注)的定义会被留在flags组(flags set)里,而不会被转换。关于在特定
的域以及配置中增加预处理器的定义,参考路径、目标以及源文件的 COMPILE_DEFINITIONS 属性来获取
更多的细节。