cmake 多次编译_cmake编译等

本文介绍了使用CMake进行项目配置和编译的方法,包括boost::format的使用,CMakeLists.txt中的关键命令如CMAKE_CURRENT_SOURCE_DIR、EXECUTABLE_OUTPUT_PATH和LIBRARY_OUTPUT_PATH等,以及如何添加头文件目录、设置编译类型和链接库。
摘要由CSDN通过智能技术生成

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(

的变量名A,这样,在最终ADD_EXECUTABLE(可执行文件Demo ${A}),以上两步操作的意思是:Cmake会将

执行文件

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( [item1] [item2][...] [[debug|optimized|general] ]):指令中的是指通过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 属性来获取

更多的细节。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值