![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
CMake
文章平均质量分 89
GPIOB_PIN7
这个作者很懒,什么都没留下…
展开
-
【CMake 入门与进阶(14)】 CMake中变量的作用域(附代码)
所以函数内部的代码中,调用 set 之前,引用了变量 ABC,此时它会搜索函数内是否定义了该变量,如果没有,它会向外搜索,结果就找到了外部定义的变量 ABC,所以函数内部的第一条打印信息是"Hello World!从打印信息可知,事实并非我们上面所假设那样,函数内调用 set 去设置变量 ABC,并不是设置了外部变量 ABC 的值,而是在函数新创建了一个变量 ABC,这个与 C 语言是不一样的,跟 Python 很像,如果大家学过 Python 的话应该就知道。所以可知,函数内可以引用函数外部定义的变量。原创 2023-06-24 08:15:00 · 472 阅读 · 0 评论 -
【CMake 入门与进阶(13)】 CMake如何设置交叉编译(附代码)
通过-DCMAKE_TOOLCHAIN_FILE 选项指定配置文件,-D 是 cmake 命令提供的一个选项,通过该选项可以创建一个缓存变量(缓存变量就是全局变量,在整个工程中都是生效的,会覆盖 CMakeLists.txt 源码中定义的同名变量 ),所以 -DCMAKE_TOOLCHAIN_FILE 其实就是设置了缓存变量 CMAKE_TOOLCHAIN_FILE,它的值就是“=”号后面的内容,cmake 会执行 CMAKE_TOOLCHAIN_FILE 变量所指定的源文件,对交叉编译进行设置;原创 2023-06-23 11:26:24 · 9759 阅读 · 4 评论 -
【CMake 入门与进阶(12)】 CMake中对文件操作(附代码)
cmake 提供了 file()命令可对文件进行一系列操作,譬如读写文件、删除文件、文件重命名、拷贝文件、创建目录等等,本文我们一起来学习这个功能强大的 file()命令。原创 2023-06-22 10:15:00 · 1771 阅读 · 1 评论 -
【CMake 入门与进阶(11)】 CMake宏定义与函数(附代码)
因为在宏定义中,宏的参数和诸如 ARGC、ARGV、ARGN 等这些值并不是变量,它们是字符串替换, 也就是说,当 cmake 执行宏定义时,会先将宏的参数和 ARGC、ARGV、ARGN 等这些值进行字符串替换, 然后再去执行这段宏,其实就像是 C 语言中的预处理步骤,这是与函数不同的地方。上面的代码中,我们定义了一个宏 abc 和一个函数 xyz,它们俩的代码是一样的,都是在内部使用 if() 判断 ARGC 是不是一个变量,如果是打印 true,如果不是打印 false;原创 2023-06-20 09:51:56 · 1000 阅读 · 0 评论 -
【CMake 入门与进阶(10)】 CMake如何定义函数,内部参数及作用域(附代码)
在 cmake 中,通过 function()命令定义的函数类似于一个自定义命令(实际上并不是),当然,事实上,cmake 提供了自定义命令的方式,譬如通过 add_custom_command()来实现,如果大家有兴趣,可以自己去学习下,笔者便不再进行介绍了。事实证明,这样也是可以的,说明通过 function()定义的函数它的使用范围是全局的,并不局限于当前源码、可以在其子源码或者父源码中被使用。那反过来,子源码中定义的函数,在父源码中可以使用吗?但是需要注意的是,return 并不可以用于返回参数。原创 2023-06-19 11:44:36 · 2144 阅读 · 0 评论 -
【CMake 入门与进阶(10)】 CMakeLists.txt 语法规则_循环语句(附使用代码)
cmake 中除了 if 条件判断之外,还支持循环语句,包括 foreach()循环、while()循环。原创 2023-06-16 11:08:31 · 533 阅读 · 0 评论 -
【CMake 入门与进阶(9)】 CMakeLists.txt 语法规则_条件判断-续(附使用代码)
本文继续CMakeLists.txt 语法规则的学习,先完成上篇条件判断的学习。原创 2023-06-15 17:26:30 · 1591 阅读 · 0 评论 -
【CMake 入门与进阶(8)】 CMakeLists.txt 语法规则(附使用代码)
在 cmake 中,可以把 1、ON、YES、TRUE、Y 或非零数字以及 0、OFF、NO、FALSE、N、IGNORE、 NOTFOUND、空字符串或以后缀-NOTFOUND 结尾这些理解为常量,类似于布尔值,而且它们不区分大小写;那它们有什么区别呢?NOT 其实就类似于 C 语言中的取反,在 if(NOT)条件判断中,如果表达式 expression 为真, 则条件判断为假;因为 GG 变量没有定义,所以 GG 表达式为假,但因为前面有 NOT 关键字,进行取反操作,整个 if 条件判断为真。原创 2023-06-14 20:11:53 · 788 阅读 · 1 评论 -
【CMake 入门与进阶(7)】 CMakeLists.txt 部分常用变量-续(附使用代码)
继续来学习CMakeLists.txt 常用变量。原创 2023-06-13 18:21:26 · 650 阅读 · 0 评论 -
【CMake 入门与进阶(6)】 CMakeLists.txt 部分常用变量(附使用代码)
从打印信息可知,PROJECT_SOURCE_DIR 指的就是工程的顶层 CMakeLists.txt 源码所在路径,而 PROJECT_BINARY_DIR 指的是我们执行 cmake 命令的所在目录,也是顶层 CMakeLists.txt 源码的 BINARY_DIR。也就是通过CMAKE_INCLUDE_PATH 变量来进行指定 , CMAKE_INCLUDE_PATH 指定了一个目录列表,find_file()、find_path()会去这个目录列表中查找文件。接下来我们进行测试。原创 2023-06-12 20:25:28 · 962 阅读 · 0 评论 -
【CMake 入门与进阶(5)】 CMakeLists.txt 语法规则基础及部分常用指令-续(附使用代码)
关于cmake常用命令、变量的学习到此结束了,给大家介绍了一些基本、常用的命令,并进行了详细的解释说明,除此之外,还有很多的命令并未提及,将会在后面介绍。原创 2023-06-09 11:19:40 · 525 阅读 · 0 评论 -
【CMake 入门与进阶(4)】 CMakeLists.txt 语法规则基础及部分常用指令-续(附使用代码)
使用 include_directories 命令将当前目录下的 include 文件夹添加到头文件搜索列表中,进入 build 目录下,执行 cmake、make 进行构建、编译,编译过程是没有问题的,不会报错提示头文件找不到;与 include_directories 命令相同,当调用 add_subdirectory 命令加载子源码时,会将 link_directories 命令包含的目录列表以及 link_libraries 命令包含的链接库列表向下传递给子源码(子源码从父源码中继承过来)。原创 2023-06-06 11:30:09 · 665 阅读 · 0 评论 -
【CMake 入门与进阶(3)】 CMakeLists.txt 语法规则基础及部分常用指令(附使用代码)
注释# 这是注释信息大多数脚本语言都是使用“#”号进行注释。命令(command)通常在CMakeLists.txt文件中,使用最多的是命令,譬如上例中的 cmake_minimum_required project 都 是命令;命令的使用方式有点类似于 C 语言中的函数,因为命令后面需要提供一对括号,并且通常需要我们提供参数,多个参数使用空格分隔而不是逗号“,”,这是与函数不同的地方。command(参数 1 参数 2 参数 3 ...)原创 2023-06-05 10:47:37 · 1527 阅读 · 0 评论 -
【CMake 入门与进阶(2)】CMake编译设置——多个源文件编译及生成库文件(附代码)
在工程目录下,我们创建了 src 和 libhello 目录,并将 hello.c 和 hello.h 文件移动到 libhello 目录下,将 main.c 文件移动到 src 目录下,并且在顶层目录、libhello 目录以及 src 目录下都有一个 CMakeLists.txt 文件。add_library 命令用于生成库文件,在本例中我们传入了两个参数,第一个参数表示库文件的名字,需要注意的是,这个名字是不包含前缀和后缀的名字;所以,意味着最终生成的库文件对应的名字会自动添加上前缀和后缀。原创 2023-06-02 11:27:41 · 3274 阅读 · 1 评论 -
【CMake 入门与进阶(1)】一个例子搞懂什么是CMakeLists——从“Hello World”开始(附代码)
开放源代码我们可以直接从 cmake 官网下载到它的源代码;跨平台cmake 并不直接编译、构建出最终的可执行文件或库文件,它允许开发者编写一种与平台 无关的 CMakeLists.txt 文件来制定整个工程的编译流程,cmake 工具会解析 CMakeLists.txt 文件语法规则,再根据当前的编译平台,生成本地化的 Makefile 和工程文件,最后通过 make 工具来编译整个工程;原创 2023-06-01 16:16:03 · 794 阅读 · 0 评论