CMake入门基础(1):CMake语法

前言

在学习x265工程过程中,以source下的CMakeLists.txt和Version.cmake为例学习了CMake语法知识,常用命令和语法总结于此。

1、CMake简介

CMake 是一个跨平台的,开源的构建系统(BuildSystem)。CMake 可以通过 CMakeLists.txt 文件来产生特定平台的标准的构建文件,例如:为 Unix 平台生成makefiles文件(使用GCC编译),为 Windows MSVC 生成 projects/workspaces(使用VS IDE编译)或Makefile文件(使用nmake编译)。

CMake官方网址: https://cmake.org/

2、CMake常用命令和语法

CMake指令查找手册:https://cmake.org/cmake/help/latest/

2.1、set

set( … [PARENT_SCOPE]) #设置普通变量
命令含义:将变量variable设置为值…,变量variable的作用域为调用set命令的函数或者当前目录,如果使用了PARENT_SCOPE选项,意味着该变量的作用域会传递到上一层
set( … CACHE [FORCE]) #设置缓存条目
命令含义:将缓存条目variable设置为值…,除非用户进行设置或使用了选项FORCE,默认情况下缓存条目的值不会被覆盖。缓存条目可以通过CMAKE的GUI界面的add entry按钮来增加。缓存条目的实质为可以跨层级进行传递的变量,类似于全局变量。
set(ENV{} []) #设置环境变量
命令含义:将环境变量设置为值(注意没有…),接着使用$ENV{}会得到新的值。

2.2、include

Load and run CMake code from a file or module.
include 指令用来载入并运行来自于文件或模块的 CMake 代码。

2.3、include_directories

include_directories ([AFTER|BEFORE] [SYSTEM] dir1 [dir2 …])
作用:将指定目录添加到编译器的头文件搜索路径之下,指定的目录被解释成当前源码路径的相对路径。

2.4、option

option(“ [value])
其中是选项名,help_text:描述、解释、备注,value是选项初始化值(除了ON以外全为OFF)

2.5、list

list (subcommand [args…])
作用:subcommand为具体的列表操作子命令,例如读取、查找、修改、排序等。为待操作的列表变量,[args…]为对列表变量操作需要使用的参数表,不同的子命令对应的参数也不一致。

GET:子命令GET用于读取列表中指定索引的的元素,可以指定多个索引。

2.6、string

字符串操作
string(FIND […]) 查找
string(REPLACE […]) 替换
string(TOLOWER ):将字符串转换为小写

2.7、find_program

find_program( name1 [path1 path2 …])
作用:查找名为name1的可执行程序,路径存在在

2.8、find_package

作用:对外部库进行查找

2.9、execute_process

execute_process(COMMAND [args1…]]
[COMMAND [args2…] […]]
[WORKING_DIRECTORY ]
[TIMEOUT ]
[RESULT_VARIABLE ]
[OUTPUT_VARIABLE ]
[ERROR_VARIABLE ]
[INPUT_FILE ]
[OUTPUT_FILE ]
[ERROR_FILE ]
[OUTPUT_QUIET]
[ERROR_QUIET]
[OUTPUT_STRIP_TRAILING_WHITESPACE]
[ERROR_STRIP_TRAILING_WHITESPACE])
作用:执行系统子进程

2.10、configure_file

Copy a file to another location and modify its contents.
configure_file(
[NO_SOURCE_PERMISSIONS | USE_SOURCE_PERMISSIONS |
FILE_PERMISSIONS …]
[COPYONLY] [ESCAPE_QUOTES] [@ONLY]
[NEWLINE_STYLE [UNIX|DOS|WIN32|LF|CRLF] ])
Copies an file to an file and substitutes variable values referenced as @VAR@ or ${VAR} in the input file content.

2.11、add_definitions

add -D define flags to the compilation of source files.

CMAKE_CXX_FLAGS/CMAKE_C_FLAGS:设置C++/C的编译器选项

2.12、find_library

find_library ( name1 [path1 path2 …])
用于查找库。

2.13、add_subdirectory

add a subdirectory to the build.
add_subdirectory(source_dir [binary_dir] [EXCLUDE_FROM_ALL])

2.14、add_executable

使用指定的源文件来生成目标可执行文件。

2.15、file

文件操作
file(READ […]) :读文件操作


THE END!


本博文只能阅读,谢绝转载,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 2963033731@qq.com

文章标题:CMake入门基础(1):CMake语法

字数:836

本文作者:Soaring Lee

发布时间:2022-03-28, 15:13:47

最后更新:2022-03-29, 22:37:10

原始链接:https://soaringleefighting.github.io/2022/03/28/【Tools系列】CMake入门基础(1):CMake语法/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

×

喜欢就点赞,疼爱就打赏

相册