CmakeList使用笔记
> cmake是一个跨平台、开源的构建系统。它是一个集软件构建、测试、打包于一身的软件。它使用与平台和编译器独立的配置文件来对软件编译过程进行控制。>> Cmake的所有语句都写在一个CMakeLists.txt的文件中,Cmake运行之后就会产生我们想要的makefile文件,然后再直接make就可以编译出可执行程序或者动态库。所以基本步骤就只有两步:(1)cmake生成MakeLists.tx
cmake是一个跨平台、开源的构建系统。它是一个集软件构建、测试、打包于一身的软件。它使用与平台和编译器独立的配置文件来对软件编译过程进行控制。
Cmake的所有语句都写在一个CMakeLists.txt的文件中,Cmake运行之后就会产生我们想要的makefile文件,然后再直接make就可以编译出可执行程序或者动态库。所以基本步骤就只有两步:(1)cmake生成MakeLists.txt文件;(2)make执行编译工作。
下面记录一下使用CMakeList的一些常用语句:
文章目录
cmakelist简介
CMake是一个跨平台的开源构建工具,用于自动化管理软件构建和编译过程。与传统的Makefile相比,CMake提供了更简洁、更易于维护的配置文件,并支持生成各种不同构建系统所需的原生构建脚本(例如Makefile、Ninja等)。
对于很多开发者来说,编写CMakeLists.txt可能是一项具有挑战性的任务,但理解其重要性和优势,以及学会正确使用它,将极大地提高项目的可移植性和可维护性。
CMakeLists.txt文件实际上是一个文本文件,其中包含了描述项目如何构建和编译的指令。这些指令可以用来设置项目名称、版本号、源文件列表、头文件搜索路径、链接库依赖关系等等。
编写CMakeLists.txt需要了解一些基本指令,以下是一些常见的指令示例:
cmake_minimum_required
:指定最低CMake版本。project
:设置项目名称和版本号。add_executable
:定义一个可执行文件的目标,并列出源文件列表。add_library
:定义一个库的目标,并列出库的源文件列表。target_include_directories
:添加头文件搜索路径。target_link_libraries
:指定目标链接到的库。
通过编写CMakeLists.txt,我们可以轻松配置各种构建选项,例如编译器标志、链接库、安装规则等。CMake还支持生成多种平台和编译器所需的原生构建文件,例如Unix的Makefile,Windows的Visual Studio解决方案等。
使用CMake可以大大简化跨平台开发的过程,提高代码的可移植性和重用性。通过正确编写CMakeLists.txt,您可以更专注于代码编写,而不必为每个平台和编译器单独维护构建脚本。
1 cmake_minimum_required
作用:指定cmake最小版本
如下图所示:
指定cmake的最小版本为2.8.0
2 SET
作用一般有两个:
1、设置变量的值
2、定义宏
3 project
设置项目名称
4 define_property
功能:
定义和记录自定义属性。在作用域中定义一个用于set_property()和get_property()命令的属性。它主要用于定义属性的初始化或继承方式。
语法:
define_property(<GLOBAL | DIRECTORY | TARGET | SOURCE |
TEST | VARIABLE | CACHED_VARIABLE>
PROPERTY <name> [INHERITED]
[BRIEF_DOCS <brief-doc> [docs...]]
[FULL_DOCS <full-doc> [docs...]]
[INITIALIZE_FROM_VARIABLE <variable>])
主要参数说明:
第一个参数确定应在其中使用属性的范围类型。它必须是下列之一:
GLOBAL = associated with the global namespace
DIRECTORY = associated with one directory
TARGET = associated with one target
SOURCE = associated with one source file
TEST = associated with a test named with add_test
VARIABLE = documents a CMake language variable
CACHED_VARIABLE = documents a CMake cache variable
PROPERTY:属性关键字
<name>:要定义的属性名称
BRIEF_DOCS:关键字,表示简要文档
<brief-doc>:简要文档与属性关联的字符串
FULL_DOCS:关键字,表示完整文档
<full-doc>:完整文档与属性关联的字符串
示例:
# Use a global property to collect all application libraries
define_property(GLOBAL
PROPERTY app_libraries
BRIEF_DOCS "app libraries"
FULL_DOCS "app libraries" )
说明:为所有应用库设置全局属性“app_libraries”,关联字符串为“app libraries”
5 include
include指令用来载入并运行来自于文件或模块的CMake代码
6 project
设置项目名称
7 add_executable
使用指定的源文件来生成目标可执行文件
8
更多推荐
所有评论(0)