CMake项目的CMackeLists.txt内容语法详解

6 篇文章 0 订阅
1 篇文章 0 订阅

1、CMake

CMake(cross platform make)是一个跨平台的安装编译工具,可以使用简单的语句描述安装编译过程,输出安装编译过程中产生的中间文件。CMake不直接产生最终的文件,而是产生对应的构造文件,如linux下的makefile,windows下的vs的projects等
CMake的编译步骤如下:
1)编写CMakeLists.txt文件
2)用cmake命令将CMakeLists.txt文件转化为make所需要的makefile文件
3)用make命令编译源码生成可执行文件或库文件

构建级别

级别说明编译器命令
Release不可以打断点调试,程序开发完成后发行使用的版本,占的体积小。 它对代码做了优化,因此速度会非常快-O3 -DNDEBUG
Debug调试的版本,体积大-g
MinSizeRel最小体积版本-Os -DNDEBUG
RelWithDebInfo既优化又能调试-O2 -g -DNDEBUG

2、CMakeLists.txt

文件基本结构

#指定所需的CMake最低版本
cmake_minimum_required(VERSION 3.5)
#定义项目名称和可选的语言,必需项
project (Headers)
#设置变量和选项
set(SOURCE src/Headers.cpp)
#添加子目录,父目录必需项
add_subdirectory(src)
#添加可执行文件或库
add_executable(Headers, Headers.cpp)
# 头文件路径,必需项
include_directories(路径)
#库文件路径,必需项
link_directories(路径) 
#添加依赖项和链接库
target_link_libraries(Headers PRIVATE lib)

语法解析

语法解析
cmake_minimum_required (VERSION 3.5)使用CMAKE的最低版本为3.5
project(xxx)定义项目名称,会自动创建两个变量:PROJECT_SOURCE_DIR 和 PROJECT_NAME。会影响${PROJECT_SOURCE_DIR} 的结果。
aux_source_directory(路径 变量)获取路径下的所有文件,并赋值给变量
set(变量 文件名/路径/…)给文件名/路径名或者其他字符串起别名,用${变量}获取变量内容
add_definitions(编译选项)添加编译选项
message(消息)打印消息
add_subdirectory(子文件夹名称)编译子文件夹的CMakeLists.txt
add_library(库文件名称如xxx STATIC 文件)将文件生成静态库
add_executable(可执行文件名称 文件)将文件生成可执行文件
include_directories(路径)规定.h头文件路径
link_directories(路径)规定.so/.a库文件路径
target_link_libraries(库文件名称/可执行文件名称 链接的库文件名称)对add_library或者add_executable生成的文件进行链接操作,必须在add_executable 或 add_library 后面,用来去链接各种库
target_include_directories编译需要包含的头文件目录
target_compile_definitions(目标 scope 编译标志)设置某个目标的编译标志
target_compile_options(目标 scope 编译参数)只会添加到指定的目标上
if(CMAKE_HOST_SYSTEM_NAME MATCHES “Linux”)成立是linux系统环境
add_compile_options(-std=c++11)使用c++11
add_definitions添加预处理指令,添加到所有的目标上
find_package(第三方库 最低版本 REQUIRED(模块是必需的) COMPONENT(查找的库列表) filesystem system)在系统和文件系统查找第三方库
add_compile_options(编译参数)添加到所有目标上
install将构建的目标(如可执行文件、库等)和其他相关文件(如头文件、配置文件等)安装到指定的位置

PRIVATE:只有目标自己会使用这些编译参数
PUBLIC:目标自己和其他依赖这个目标的目标都会使用这些编译参数
INTERFACE:只有其他依赖这个目标的目标会使用这些编译参数

宏变量含义

宏变量解析
CMAKE_BINARY_DIR运行cmake的目录。外部构建时就是build目录
CMAKE_SOURCE_DIR根源代码目录,工程顶层目录。暂认为就是PROJECT_SOURCE_DIR
CMAKE_CURRENT_SOURCE_DIR当前处理的 CMakeLists.txt 所在的路径
CMAKE_CURRENT_BINARY_DIR当前所在build目录
PROJECT_SOURCE_DIR本CMakeLists.txt所在的文件夹路径/工程顶层目录
PROJECT_BINARY_DIR暂认为就是CMAKE_BINARY_DIR
PROJECT_NAME本CMakeLists.txt的project名称
  • 24
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值