CMake 基础备查

CMake教程上
CMake教程下

个人常用

加载静态库

# 指定静态库路径
set(LIB_DIR "path/to/static/library")

# 将源代码添加到此项目的可执行文件。
add_executable (YourExecutableName "your_source_files.cpp")

# 链接静态库
target_link_libraries(YourExecutableName PRIVATE ${LIB_DIR}/libyour_static_library.a)

加载动态库

# 指定动态库路径
set(LIB_DIR "path/to/shared/library")

# 将源代码添加到此项目的可执行文件。
add_executable (YourExecutableName "your_source_files.cpp")

# 链接动态库
target_link_libraries(YourExecutableName PRIVATE ${LIB_DIR}/libyour_shared_library.so)

编译流程

蓝色虚线表示使用makefile构建项目的过程

红色实线表示使用cmake构建项目的过程

在这里插入图片描述

CMake的使用

注释

注释行

CMake 使用 # 进行行注释,可以放在任何位置。

注释块

CMake 使用 #[[ ]] 形式进行块注释。

CMakeLists.txt 文件

cmake_minimum_required(VERSION 3.0)		#指定使用的 cmake 的最低版本
project(CALC)							#定义工程名称
add_executable(app add.c div.c main.c mult.c sub.c)			#add_executable(可执行程序名 源文件名称)

执行CMake 命令

$ cmake CMakeLists.txt文件所在路径

定义变量

# set(SRC_LIST add.c  div.c   main.c  mult.c  sub.c)
add_executable(app  ${SRC_LIST})

指定使用的C++标准

C++标准对应有一宏叫做DCMAKE_CXX_STANDARD

//方式一
$ g++ *.cpp -std=c++11 -o app

//方式二 在 CMakeLists.txt 中通过 set 命令指定
#增加-std=c++11
set(CMAKE_CXX_STANDARD 11)
#增加-std=c++14
set(CMAKE_CXX_STANDARD 14)
#增加-std=c++17
set(CMAKE_CXX_STANDARD 17)

//方式三 在执行 cmake 命令的时候指定出这个宏的值
#增加-std=c++11
cmake CMakeLists.txt文件路径 -DCMAKE_CXX_STANDARD=11
#增加-std=c++14
cmake CMakeLists.txt文件路径 -DCMAKE_CXX_STANDARD=14
#增加-std=c++17
cmake CMakeLists.txt文件路径 -DCMAKE_CXX_STANDARD=17

指定输出的路径

在CMake中指定可执行程序输出的路径,也对应一个宏,叫做EXECUTABLE_OUTPUT_PATH,它的值还是通过set命令进行设置:

set(HOME /home/robin/Linux/Sort)			#定义一个变量用于存储一个绝对路径
set(EXECUTABLE_OUTPUT_PATH ${HOME}/bin)		#将拼接好的路径值设置给EXECUTABLE_OUTPUT_PATH宏
//如果这个路径中的子目录不存在,会自动生成,无需自己手动创建

由于可执行程序是基于 cmake 命令生成的 makefile 文件然后再执行 make 命令得到的,所以如果此处指定可执行程序生成路径的时候使用的是相对路径 ./xxx/xxx,那么这个路径中的 ./ 对应的就是 makefile 文件所在的那个目录。

搜索文件

在CMake中为我们提供了搜索文件的命令,可以使用aux_source_directory命令或者file命令。

//方式一
//在 CMake 中使用aux_source_directory 命令可以查找某个路径下的所有源文件
aux_source_directory(< dir > < variable >)
	dir:要搜索的目录
	variable:将从dir目录下搜索到的源文件列表存储到该变量中
//案列
cmake_minimum_required(VERSION 3.0)
project(CALC)
include_directories(${PROJECT_SOURCE_DIR}/include)
# 搜索 src 目录下的源文件
aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR}/src SRC_LIST)
add_executable(app  ${SRC_LIST})
//方式二
//除了搜索以外通过 file 还可以做其他事情
file(GLOB/GLOB_RECURSE 变量名 要搜索的文件路径和文件类型)
	GLOB: 将指定目录下搜索到的满足条件的所有文件名生成一个列表,并将其存储到变量中。
	GLOB_RECURSE:递归搜索指定目录,将搜索到的满足条件的文件名生成一个列表,并将其存储到变量中。
//搜索当前目录的src目录下所有的源文件,并存储到变量中
file(GLOB MAIN_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp)
file(GLOB MAIN_HEAD ${CMAKE_CURRENT_SOURCE_DIR}/include/*.h)

CMAKE_CURRENT_SOURCE_DIR 宏表示当前访问的 CMakeLists.txt 文件所在的路径。

包含头文件

在CMake中设置要包含的目录通过include_directories就可以搞定

include_directories(headpath)
//案列
cmake_minimum_required(VERSION 3.0)
project(CALC)
set(CMAKE_CXX_STANDARD 11)
set(HOME /home/robin/Linux/calc)
set(EXECUTABLE_OUTPUT_PATH ${HOME}/bin/)
include_directories(${PROJECT_SOURCE_DIR}/include)
file(GLOB SRC_LIST ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp)
add_executable(app  ${SRC_LIST})

其中,第六行指定就是头文件的路径,PROJECT_SOURCE_DIR宏对应的值就是我们在使用cmake命令时,后面紧跟的目录,一般是工程的根目录。

详细教程可转

爱编程的大丙

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值