CMakeList入门到精通教程(这篇就足够啦)

一、CMakeLists.txt基础知识
1.1 基本结构
1.2 主要命令
1.2.1 `cmake_minimum_required`
1.2.2 `project`
1.2.3 `add_executable`
1.2.4 `add_library`
1.2.5 `include_directories`
1.2.6 `target_include_directories`
1.2.7 `find_package`
1.2.8 `target_link_libraries`
1.2.7 message,信息打印
二、CMakelists 常用的变量
2.1 CMake 预定义变量
2.2 CMakeLists.txt 中定义的变量
2.3 使用变量
2.4 变量作用域
三、cmake安装编写
3.1 cmake安装可执行文件
3.2 cmake安装库
3.3 cmake安装目录
四、CMake测试
4.1 启用测试
4.2 添加测试
4.3 直接运行可执行文件作为测试
4.4 使用外部测试框架(如 Google Test)
4.5 运行测试
五、CMake其他
5.1 GLOB_RECURSE引用全局内容
5.2 CMAKE调试
5.3 execute_process
5.4 获取版本号
5.5 利用-D设置变量
六、其他问题
6.1 CMake Error: Error required internal CMake variable not set, cmake may be not be built correctly.
解决步骤
6.2 VERSION not allowed unless CMP0048 is set to NEW

一、CMakeLists.txt基础知识


CMakeLists.txt 是 CMake 构建系统用于定义项目的配置文件。CMake 是一个跨平台的自动化构建系统,它使用一个名为 CMakeLists.txt 的文件来指定如何构建项目。这个文件可以包含各种命令,用于指定项目名称、源文件、编译选项、库依赖等。下面是一个详细的指南,介绍如何使用 CMakeLists.txt 文件。

1.1 基本结构


一个基本的 CMakeLists.txt 文件可能如下所示:

cmake_minimum_required(VERSION 3.10)

# 设置项目名称和版本
project(MyProject VERSION 1.0)

# 添加一个可执行文件
add_executable(MyExecutable main.cpp)

1.2 主要命令


1.2.1 cmake_minimum_required


用来指定CMake的最小版本要求。
语法:cmake_minimum_required(VERSION major.minor[.patch[.tweak[.id]]])
1.2.2 project
定义项目的名称和可选的版本号。
语法:project(ProjectName [VERSION major.minor[.patch[.tweak[.id]]]] [DESCRIPTION summary])
1.2.3 add_executable
添加一个可执行文件到项目中。
语法:add_executable(<name> [WIN32] [MACOSX_BUNDLE] [EXCLUDE_FROM_ALL] source1 source2 ... sourceN)
1.2.4 add_library
添加一个库到项目中。
语法:add_library(<name> [STATIC | SHARED | MODULE] [EXCLUDE_FROM_ALL] source1 source2 ... sourceN)
1.2.5 include_directories
向编译过程添加包含目录。
语法:include_directories([AFTER|BEFORE] [SYSTEM] dir1 dir2 ...)
1.2.6 target_include_directories
为目标(如可执行文件或库)添加包含目录。
语法:target_include_directories(<target> [SYSTEM] [BEFORE] <INTERFACE|PUBLIC|PRIVATE> [items1...] [...])
1.2.7 find_package
查找并加载外部项目。
语法:find_package(<PackageName> [version] [EXACT] [QUIET] [MODULE] [REQUIRED] [COMPONENTS [components...]] [OPTIONAL_COMPONENTS [components...]] [CONFIG|NO_MODULE|NO_CONFIG|NO_POLICY_SCOPE] [NAMES name1 [...]])
1.2.8 target_link_libraries
为目标(如可执行文件或库)添加需要链接的库。
语法:target_link_libraries(<target> ... <PRIVATE|PUBLIC|INTERFACE> <item>... [...])
假设你有一个项目,它包含两个源文件 main.cpp 和 MyClass.cpp,以及对应的头文件 MyClass.h。你想编译这两个源文件为一个可执行文件,并且链接到一个名为 MyLibrary 的外部库。

cmake_minimum_required(VERSION 3.10)

project(MyProject)

# 设置包含目录
include_directories(${CMAKE_SOURCE_DIR}/include)

# 添加一个可执行文件
add_executable(MyExecutable main.cpp MyClass.cpp)

# 查找并链接外部库
find_pac
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

C++编程指南

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

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

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

打赏作者

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

抵扣说明:

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

余额充值