cmake快速入门——从CMakeLists.txt开始

make命令

make命令的执行基于Makefile文件内包含的命令
个人觉得Makefile就像是一个shell的脚本,把C/C++的在shell中的编译指令在Makefile中罗列,并以目标与依赖的形式对要执行的编译指令进行索引排序。make命令也可将Makefile中的一段指令单独执行。当然,在Makefile文件中也可执行许多其他的shell命令。

cmake命令

cmake根据CMakeLists.txt文件生成对应的Makefile文件,之后就可以调用make对项目进行编译。此外,cmake还能配合ninja来实现代码的编译。个人觉得cmake降低了 make的使用门槛。
以下为本人摸索CMakeLists.txt文件编写得出的经验。


CMakeLists.txt 编写

首先安利一下VScode,作为一个插件丰富、自动代码补全的编辑器,它的cmake插件蛮不错的。

包含头文件目录主要有两种方式,全局路径包含目标指向的路径包含

  1. include_directories():全局路径包含
  2. target_include_directories():目标指向的路径包含

PUBLIC:当前库包含调用库的目标也包含该目录
PRIVATE:仅当前库包含该目录,调用库的目标不包含该目录
INTERFACE:当前库不包含该目录,仅调用库的目标包含该目录

add_library():构建库


STATIC:静态库,生成的可执行文件不依赖库,可以独立运行,方便发布,;但占据空间,编译较慢
SHARED:动态库,生成的可执行文件依赖库,不能独立运行;占据空间少,编译快


CMakeLists.txt 基本模板

cmake_minimum_required(VERSION 3.0.0) #最低cmake版本要求

project( example ) #添加工程名称

find_package(package_name REQUIRED) #添加外部库

include_directories(DIR ...) #添加(头文件)包含路径

add_executable(${PROJECT_NAME} main.cpp) #构建可执行文件

add_subdirectory(DIR ...) #添加需要编译的子目录,子目录中也需包含CMakeLists.txt文件

add_library(lib [STATIC|SHARED] lib.cpp ...) #构建库

target_include_directories( <example or lib> [PUBLIC|PRIVATE|INTERFACE] DIR ...) #指定目标添加(头文件)包含目录。

target_link_libraries(${PROJECT_NAME} lib) #链接目标和库

link_directories( DIR ...) #添加搜索库在的目录/***

target_link_directories(<example or lib> [PUBLIC|PRIVATE|INTERFACE] DIR ...) #添加搜索库的目录/***
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值