CMake实践

最近工作需求,需要从win平台移植到linux平台。上面建议用CMake,学习了一下,下面通过一个实例来说明、回顾一下CMake的使用。

 

cmake_minimum_required(VERSION 2.8)
PROJECT(firest_test)

ADD_DEFINITIONS(-D_CONSOLE)
ADD_DEFINITIONS(-DWIN32)
ADD_DEFINITIONS(-D_DEBUG)


AUX_SOURCE_DIRECTORY(firest_test DIR_SRC_MAIN)

# show files in subdir
#FOREACH(file ${firest_test})
#MESSAGE(STATUS ${file})
#ENDFOREACH(file)

# include files
INCLUDE_DIRECTORIES(E:\boost\include)

# library files
#TARGET_LINK_LIBRARIES(firest_test libboost)


AUX_SOURCE_DIRECTORY(testcase DIR_TEST_CASE)


SET(TOTAL_SRCS ${DIR_SRC_MAIN} ${DIR_TEST_CASE})

ADD_EXECUTABLE(firest_test ${TOTAL_SRCS})


cmake_minimum_required 这个是说明该CMakeLists.txt执行的CMake版本需求,不写会有警告。

 

PROJECT(projectname) projectname 工程名,网上很多实例都是大写,根据实际情况,其就是执行CMake后生成的sln文件名

 

ADD_DEFINITIONS 向编译器定义宏或者参数。如ADD_DEFINITIONS(-Wall)

 

AUX_SOURCE_DIRECTORY(dir var) 发现dir目录下的所有源文件,并存储在var中

 

INCLUDE_DIRECTORIES(include_dir) 包含目录的路径,如果你工程引用到其他库,

TARGET_LINK_LIBRARIES(target,lib_file) 目标文件链接时需要的库文件。


SET(var value1 value2 ...) 设置变量,可以一次设置多个值,值之间用空格或分号隔开


ADD_EXECUTABLE(target filelist) 设置目标生成文件,filelist为依赖的源文件列表


最后关于CMake的运行问题。有In-Source和Out-of-Source两种类型。


In-Source 就是在工程目录下,运行CMake . (即在当前目录下运行,一般是工程目录下) 但是这种方式,有一个很大的弊病就是CMake生成的文件会污染我们自己的工程文件,如果你的源文件都没有CMake生成的多,就知道效果了。


Out-Of-Source这种是比较推荐的。就是在其他我们需要生成的目录下,运行CMake CMakeLists.txt所在的文件路径即可,所有CMake生成的文件都会在本目录下,而不会污染工程源文件。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值