
cMake
发布日期:2021-05-07 20:54:56
浏览次数:24
分类:精选文章
本文共 1506 字,大约阅读时间需要 5 分钟。
一、简介
CMake 是一个跨平台的自动化建构系统,它使用一个名为 CMakeLists.txt 的文件来描述构建过程,可以产生标准的构建文件,如 Unix 的 Makefile 或Windows Visual C++ 的 projects/workspaces 。文件 CMakeLists.txt 需要手工编写,也可以通过编写脚本进行半自动的生成。CMake 提供了比 autoconfig 更简洁的语法。
在 linux 平台下使用 CMake 生成 Makefile 并编译的流程如下:
- 编写 CmakeLists.txt。
- 执行命令“cmake PATH”生成 Makefile ( PATH 是 CMakeLists.txt 所在的目录 )。
- 使用 make 命令进行编译
也可以直接使用cmake生成目标文件
二、cMake常用指令
指令 | 描述 |
---|---|
cmake_minimum_required(version) | 设置cmake的最低版本 |
project(name) | 设置项目名称 |
add_executable(name file) | 指定生成的目标文件 |
aux_source_directory(. DIR_SRCS) | 将指定目录下的源文件名称赋值给指定变量 |
set(key, value) | 设置变量 |
option(<option_variable> " " [NO|OFF]) | 为用户提供选项为ON或OFF 的选项。如果未提供初始值,则使用OFF。 |
configure_file(xxx.in.h xxx.h) | 将xxx.in.h中定义的宏输入到xx.h |
add_library(name [STATIC | SHARED ] [xx.c] [IMPORTED]) | 生成或者导入一个库 |
set_target_properties(“path”) | 指定导入库的路径,配合add_library使用 |
add_definitions(-DFOO -DBAR …) | 添加编译参数 |
include_directories(dir) | 指定查找头文件的路径,相当与makefile中的-I(大写的i) |
link_directories(dir) | 指定库的地址,相当与makefile中的-L(大写的l) |
link_libraries(dir) | 指定要加载的库文件,相当makefile中的-l(小写的l) |
target_compile_definitions(<tagert> ) | 给指定的目标添加编译项 |
target_include_directories(<tagert> path) | 给指定的目标添加查找头文件的路径 |
install() | 安装到指定目录 |
add_subdirectory(file) | 添加一个额外的cmake文件 |
export | 从构建树中导出目标,以供外部项目使用。 |
configure_package_config_file | xxx |
write_basic_package_version_file | xxx |
二、cmake常量
常量 | 描述 |
---|---|
${CMAKE_CURRENT_BINARY_DIR} | 当前工程的二进制文件输入路径 |
${PROJECT_SOURCE_DIR} | 当前工程的源码路径 |
${PROJECT_BINARY_DIR} | 当前工程二进制文件路径 |
三、条件判断
语句 | 描述 |
---|---|
if(NOT DEFINED value) | 判断value是否定义,如果没定义则返回true |
if(DEFINED value) | 判断value是否定义,如果定义则返回true |
endif() | 结束if语句 |
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2025年04月02日 09时17分34秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
简单Makefile的编写
2021-05-08
使用BAT批处理 匹配查找指定文件夹,并在当文件夹下创建空文件
2021-05-08
wxpython的Hello,World代码探索
2021-05-08
【数字图像处理】OpenCV3 学习笔记
2021-05-08
【单片机开发】智能小车工程(经验总结)
2021-05-08
【单片机开发】基于stm32的掌上游戏机设计 (项目规划)
2021-05-08
KeepAlived介绍、配置示例、KeepAlived配置IPVS、调用脚本进行监控
2021-05-08
【Numpy学习】np.count_nonzero()用法解析
2021-05-08
Scala集合-数组、元组
2021-05-08
JAVA网络爬虫01-http client爬取网络内容
2021-05-08
04 程序流程控制
2021-05-08
java并发编程(1)
2021-05-08
C++&&STL
2021-05-08
子集(LeetCode 78)
2021-05-08
1004 Counting Leaves (30分)
2021-05-08
1093 Count PAT‘s (25分) 含DP做法
2021-05-08
一篇解决JMM与volatile详解(二)
2021-05-08
数据结构之数组与经典面试题(二)
2021-05-08
无锁并发框架-Disruptor的使用(二)
2021-05-08
Android wm命令
2021-05-08