CMake学习历程

基础

CMake内部构建

cmakelist.txt

#CMakeLists
1 PROJECT(HELLO) #定义工程名称 
2 SET(SRC_LIST main.c) #显式定义变量(通俗讲 将文件集中起来并对其重命名)
3 MESSAGE(STATUS "This is BINARY dir " ${HELLO_BINARY_DIR}
#向终端输出文件位置信息
4 MESSAGE(STATUS "This is SOURCE dir " ${HELLO_SOURCE_DIR})
5 ADD_EXECUTABLE(hello SRC_LIST) #生成名为hello的可执行文件

内部构建的不足:生成的中间临时文件与代码文件混在一起,无法自动删除

入门

cmake外部构建

在根目录创建以下目录:
1.src 存放源代码
2.doc 存放工程文档
3.bin 存放生成的可执行文件

指令关联文件

#用于添加存放源文件的目录
ADD_SUBDIRECTORY(source_dir [binary_dir] [EXCLUDE_FROM_ALL])
#设置最终生成可执行文件的存放位置,不包含编译过程中生成的中间文件
SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin) 
#设置生成共享库文件的存放位置
SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)

共享库相关

ADD_LIBRARY(libname [SHARED|STATIC|MODULE] [EXCLUDE_FROM_ALL] source1 source2 ... sourceN)
#libname为生成的文件名称
#库类型有三种:SHARED动态库、STATIC静态库、MODULE若系统不支持dyld则被视为SHARED
#EXCLUDE_FROM_ALL表示该库不会被默认构建,除非有其他的组件依赖或者手工构建

使用外部共享库和头文件

INCLUDE_DIRECTORIES([SFTER|BEFORE] [SYSTEM] dir1 dir2 ...)
#用于添加多个特定的头文件搜索路径,路径中包含空格可用双引号
LINK_DIRECTORIES(dir1 dir2 ...)
#添加非标准库文件搜索路径
TARGET_LINK_LIBRARIES(target library1 <debug|optimized> library2 ...)
#为target添加需要链接的共享库

CMake常用变量与指令

常用变量

1.
CMAKE_BINARY_DIR
PROJECT_BINARY_DIR
<projectname>_BINARY_DIR
#代表工程编译发生目录
2.
CMAKE_SOURCE_DIR
PROJECT_SOURCE_DIR
<projectname>_SOURCE_DIR
#代表工程顶层目录
3.
CMAKE_CURRENT_SOURCE_DIR
#当前CMakeLists.txt所在路径
4.
CMAKE_CURRENT_BINARY_DIR
#当前TARGET编译目录
5.
EXECUTABLE_OUTPUT_PATH
LIBRARY_OUTPUT_PATH
#用于定义结果存放路径

常用指令


FIND_FILE(<VAR> name1 path1 path2 ...)VAR变量代表找到的文件全路径
FIND_LIBRARY (<VAR> name1 path1 path2 ...)VAR变量代表找到的库全路径
FIND_PATH(<VAR> name1 path1 path2 ...)VAR变量代表包含该文件的路径
FIND_PROGRAM(<VAR> name1 path1 path2 ...)VAR变量代表包含该程序的全路径
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

toctor

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值