CMake
文章平均质量分 81
编译与构建系统。
CMake命令分2部分:1.cmd\powershell中输入的命令行命令(控制行为动作:构建\编译\安装\部署);2.Makefile中输入的cmake脚本命令(定义构建的规则);
云中飞鸿--**峰
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
makefile中使用:变量、%、$@、exprot
环境变量是父进程留给子进程的“遗产”,只有被 export 标记过的遗产,法律(操作系统)才允许传给后代;没标记的,只能父进程自己用,子进程无权继承。这就是为什么在递归 Makefile 中,export 是必不可少的“传话筒”。原创 2026-06-20 12:19:42 · 228 阅读 · 0 评论 -
CMake命令行命令
CMake命令分2部分:1.cmd\powershell中输入的命令行命令(控制行为动作:构建\编译\安装\部署);2.Makefile中输入的cmake脚本命令(定义构建的规则);转载 2025-09-24 11:14:07 · 83 阅读 · 0 评论 -
CMake常用的30个命令
set_property 是 CMake 中的一个命令,用于设置目标(targets)、源文件(source files)、目录(directories)或其他 CMake 实体的属性。project 是 CMake 中的一个命令,用于定义项目的基本信息,包括项目名称、版本、描述以及使用的编程语言等。add_subdirectory 是 CMake 中的一个命令,用于将指定的子目录添加到当前项目的构建系统中。find_library 是 CMake 提供的一个命令,用于在系统中查找指定的库文件。转载 2025-09-18 15:18:38 · 228 阅读 · 0 评论 -
cmake 交叉编译(linux平台编译arm)
在PC上开发时,我们可以直接在PC端编译、链接、运行,但是到了嵌入式环境,由于嵌入式的设备资源(CPU、RAM)无法和PC端相比,如果项目比较复杂,很难甚至不可能在设备上编译。CMAKE_SYSTEM_NAME 的可选值可以参考 CMAKE_SYSTEM_NAME,如果目标平台支持命令行操作,可以输入 uname -s 获取目标系统名称。二进制可执行文件在链接阶段,会链接第三方库,但是 arm的编译器无法链接到 x86 环境下的库,所以需要重新编译,编译时需要指定使用arm编译器。转载 2024-11-05 14:32:59 · 948 阅读 · 0 评论 -
CMake install部署项目
CMake Install(CMake安装)是CMake工具的一个重要组成部分,它的主要功能是将构建的目标(如可执行文件、库等)和其他相关文件(如头文件、配置文件等)安装到指定的位置。这个过程是通过在CMakeLists.txt文件中使用install命令来实现的。CMake Install的核心概念主要包括以下几个部分:1.1.1 目标(Targets)目标(Targets)是CMake Install的核心概念之一。在CMake中,目标主要指的是我们需要构建的项目,比如一个可执行文件、一个库等。转载 2024-11-03 21:13:32 · 238 阅读 · 0 评论 -
CMake编译特性相关设置函数(综述)
当需要使用cmake export关键字导出声明的target并附带其中的 PUBLIC 属性时,我们必须 将PUBLIC / PRIVATE / INTERFACE 关键字向这类 target 族函数补齐。且如果一个 target 族函数声明了这三个关键字其中之一,该 target 所属的其他 target 族函数均应当声明关键字。该函数声明了链接时需要参与的依赖库名称或target。注意:由于一个target中包含多个属性,一般情况下包含了头文件路径。该函数声明了编译目标时查找使用头文件的路径。转载 2024-11-01 18:21:30 · 241 阅读 · 0 评论 -
cmake编译特性 相关设置函数(细节)
在 CMake 中,target_link_libraries 命令用于将一个或多个库链接到特定的目标上,如可执行文件或库。通过 target_link_libraries 命令,你可以方便地管理和链接你的项目所需的所有库,使得 CMake 构建系统能够正确地生成可执行文件或库,并确保它们能够正确地链接和运行。如果库不是通过 find_package 找到的,你可以使用全路径来指定要链接的库,例如 ${CMAKE_SOURCE_DIR}/lib/libexample.a。原创 2024-11-01 17:31:41 · 1293 阅读 · 0 评论 -
target_include_directories包含目录详解
在编译 C++ 项目时,头文件提供了声明和接口,是源代码文件间相互引用的关键部分。为了告诉编译器去哪里查找这些头文件,通常需要指定一个或多个包含目录(include directories)。如果没有正确设置头文件路径,编译器会报出类似 "file not found" 的错误。因此,如何有效管理和设置这些路径对于构建项目至关重要。原创 2024-11-01 16:09:11 · 1726 阅读 · 0 评论 -
CMake之生成器表达式
:会返回目标(如库或可执行的bin文件)的文件名,不包含路径,例如有一个目标是libmyso.so,$会得到libmyso.so。3.输出表达式,模式为$ 或 $ 这些表达式可能基于一些输入参数,生成一个输出,他们的输出可以直接在CMake命令中使用,也可以与其他生成表达式组合使用。查询由add_executable()、add_library()生成的目标。原创 2024-11-01 10:14:48 · 946 阅读 · 0 评论 -
cmake 语法
在前文已经学习了CMake作为一门语言的最基本内容,接下来是进一步的内容。原创 2024-10-31 17:10:35 · 913 阅读 · 0 评论 -
cmake常用功能
3.2 输出带有级别的消息:软件中一般会至少有4种常用信息,一般信息、警告信息、严重错误信息、调试信息等;4、 message Reporting checks查找库日志。:输出作者警告信息,通常用于指出可能影响到项目的重要问题。信息,用于提示用户可能的问题或错误。3.3 输出消息的时候,带有变量的值。可以掺杂在任意位置,不影响业务逻辑。信息,并停止CMake过程。如果不指定,行注释,一直运行到行尾。二、message详解。3.1 输出普通消息。原创 2024-10-31 14:19:52 · 511 阅读 · 0 评论 -
‘make‘ 不是内部或外部命令,也不是可运行的程序或批处理文件 解决方法
所以,这里将mingw32-make.exe复制粘贴一个副本,将这个副本 重命名为make.exe。这样,既有make.exe,又有mingw32-make.exe了,就都可以使用了!1.1 如果你在使用Windows,你可能需要安装一个类Unix环境,如Cygwin或者是MinGW,或者直接安装一个Linux子系统(WSL)在Windows上;2、因为之前安装过QT,按照的时候安装了MinGW,测试gcc -v、gdb -v的时候均正常,但是仍然无法使用“make”命令;解决方法:安装make工具。原创 2024-10-30 10:43:36 · 3574 阅读 · 0 评论 -
CMake知识
需要注意的是,一旦在运行 cmake 时指定了某个选项的值,它将被缓存起来,并在随后的配置运行中使用,除非通过命令行再次明确设置或使用 ccmake 或 CMake GUI 清除缓存。这一行在编译时定义一个预处理器宏USE_FEATURE_X,使得源码中的#ifdef USE_FEATURE_X判断为真,从而包含和执行feature_x相关的代码。CMake 允许为项目增加编译选项,从而可以根据用户的环境和需求选择最合适的编译方案,即用户定义自定义编译选项,这样用户可以在编译时选择是否开启某项特性。转载 2024-10-28 17:33:01 · 287 阅读 · 0 评论 -
CMake常见的四种构建类型:Windows环境
由于demo比较简单,差别不是特别大,对于工作中的项目代码,四种构建类型编译出来的可执行文件大小会有很大的差别。通过这个简单的示例,你可以看到如何使用CMake管理不同的构建类型,并为它们设置特定的编译器选项。特点:优化代码,同时保留足够的调试信息,便于调试优化后的代码。特点:不优化代码,保留完整的调试信息,使得开发者可以进行调试,找出程序中的错误。由于没有优化,程序运行速度较慢,体积较大。特点:优化代码以提高执行速度和效率,不保留调试信息或仅保留极少的调试信息,生成的可执行文件体积更小,运行速度更快。原创 2024-10-28 16:15:56 · 980 阅读 · 0 评论 -
windows系统cmake生成c++动态库无lib文件:提示LINK : fatal error LNK1104: cannot open file ‘Debug\math.lib‘
一、正常情况下,我们使用VS生成动态dll库的时候,都会伴随着生成一份“动态导入库”lib文件。但是,测试cmake的时候,并没有生成,当使用指令:cmake --build .意思是,在D:\28.CMakeProjects\403_dll\project\build\Debug目录下无法打开math.lib文件。经查看,确实没有这个文件。5、构建项目,即可正常运行。2. main.c中。原创 2024-10-28 13:45:47 · 1048 阅读 · 0 评论 -
CMake知识点
CMake支持多种编译器,包括GCC,Clang,Visual Studio等,并且可以生成各种类型的项目文件,如Makefile,Ninja,Visual Studio解决方案等。CMake(Cross-platform Make)是一个开源的、跨平台的自动化建构系统,它允许开发者编写一份通用的CMakeList.txt文件来控制编译过程,而不需要修改特定平台下的编译配置,从而实现真正意义上的跨平台编译。例如,Windows平台和Linux平台的系统调用是不同的,处理文件路径的方式也是不同的。原创 2024-10-25 17:14:17 · 775 阅读 · 0 评论 -
Makefile知识点
使用一个变量“objects”、“OBJECTS”、“objs”、“OBJS”、“obj”或者“OBJ”来作为所有的.o文件的列表的替代。注意:当makefile文件的命名不是(:“GNUmakefile”、“makefile”、“Makefile”。将暂停对当前使用指示符“include”的makefile文件的读取,而转去依此读取由“include”指示符指定的文件列表。(根据命名的查找顺序“GNUmakefile”,“makefile”,“Makefile”,首先找到那个就读取那个)原创 2024-10-25 17:09:33 · 992 阅读 · 0 评论 -
linux中有g++/,windows中有MSVS,为什么还需要CMake?
敲命令去编译,对于大型文件简直就是噩梦,每次编译都要敲一大串命令。但是写成文件总比敲命令要方便,要是把这些命令写成文件,每次编译的时候直接复用这个文件就好了。文件中的内容没有减少,只是减少了逐个文件敲指令编译的过程,编程整体按照指令一次性编译!尽管大家都要经过预处理,编译,汇编,链接这四个步骤,但是大家走的路是不相同的。针对于不同的编译器,生成相对应的编译命令。相当于在用户和操作系统上的编译器之间做了一层抽象,对于 大型工程 并不好用。编译器,相对应的文件是。开发代码,它使用的是。转载 2024-09-11 10:19:16 · 658 阅读 · 0 评论
分享