![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
cmake
文章平均质量分 71
Ruo_Xiao
己所不欲,勿施于人。
展开
-
“轻松搞定 CMake”系列之 find_package 用法详解
在没有 CMake 的时代,这种库查找链接的工作都需要借助 MakeFile 中的各种命令来完成,非常的繁琐,而且不方便移植,到了 CMake 时代,CMake 给我们提供了 find_package() 命令用来查找依赖包,理想情况下,一句 find_package() 命令就能把一整个依赖包的头文件包含路径、库路径、库名字、版本号等情况都获取到,后续只管用就好了。所谓“找到”这些库,其实是根据我们的需要找到指定版本的库头文件包含路径、链接库路径等,从而能够满足我们开发项目的编译链接需要。转载 2023-01-13 13:57:10 · 12357 阅读 · 1 评论 -
cmake / CMAKE_INSTALL_PREFIX
CMAKE_INSTALL_PREFIX 为 cmake 内置变量,用于指定 cmake 执行 install 目标时,安装的路径前缀。在设置完 install 的安装目录之后,执行 install 时可以通过 DESTINATION 直接指定安装目录之下的目录。要加在 PROJECT(< project_name>) 之后。2、设置 CMAKE_INSTALL_PREFIX 变量。1、在执行 cmake 时指定。原创 2022-09-28 13:24:21 · 6775 阅读 · 0 评论 -
cmake / set 命令
命令可以设置普通变量、缓存条目、环境变量三种变量的值,对应如下三种命令格式:设置普通变量时,的值 表示可以给变量设置 0 个或者多个值,当设置多个值时(大于2个),多个值会通过连接成一个真实的值赋值给变量,当设置 0 个值时,实际上是把变量变为未设置状态,相当于调用 命令。1)设置变量为一个给定的值打印2)设置变量为多个给定的值 打印3)设置变量为空 打印 4)如果在函数内,set使用选项,则变量的作用域只能传递到调用它的函数。场景1:在函数(示例中为)内使用set定义变量,带选项转载 2022-06-06 16:10:59 · 1073 阅读 · 0 评论 -
cmake / cmake --build 如何理解
对于 cmake ,一直理解为项目构建工具,知道遇到 --build 才发现,cmake 还统一了各个平台的编译阶段。下面摘抄知乎上大神的理解:简单说一下cmake项目构建过程:1、首先,使用命令行:‘cmake <source tree>’,比如:cmake .. ,在你的构建目录(外部构建方式)下生成了项目文件 project files,官方文档中又叫 build tree / binary tree,这其中就包括,比如:Makefile,还有一些其他相关文件 / 目录 / 子目原创 2022-03-31 09:22:25 · 11786 阅读 · 0 评论 -
cmake / CMAKE _ * _ OUTPUT_DIRECTORY 说明
一、CMAKE_LIBRARY_OUTPUT_DIRECTORYWhere to put all the LIBRARY targets when built.This variable is used to initialize the LIBRARY_OUTPUT_DIRECTORY property on all the targets. See that target property for additional information.说人话就是指定动态库或者静态库的输出目录。栗原创 2022-03-30 18:10:18 · 3083 阅读 · 2 评论 -
CMake 中的 PUBLIC,PRIVATE,INTERFACE
一、概述CMake中经常会使用target_**()相关命令,target_**()命令支持通过PUBLIC,PRIVATE和INTERFACE关键字来控制传播。本文主要介绍下这三个关键字的区别。二、解释以target_link_libraries(A B)命令为例,从理解的角度解释:PRIVATE 依赖项 B 仅链接到目标 A,若有 C 链接了目标 A,C 不链接依赖项 B 。 INTERFACE 依赖项 B 并不链接到目标 A,若有 C 链接了目标 A,C 会链接依赖...转载 2022-03-15 11:34:37 · 655 阅读 · 0 评论 -
cmake / add_compile_options、CMAKE_CXX_FLAGS 和 add_definitions 区别
在 cmake 脚本中,设置编译选项可以通过 add_compile_options 命令,也可以通过 set 命令修改CMAKE_CXX_FLAGS 或 CMAKE_C_FLAGS。使用这两种方式在有的情况下效果是一样的,但请注意它们还是有区别的:add_compile_options 命令添加的编译选项是针对所有编译器的(包括 c 和 c++ 编译器);set 命令设置 CMAKE_C_FLAGS 或 CMAKE_CXX_FLAGS 变量则是分别只针对 c 和 c++ 编译器的。例如下面转载 2021-09-26 06:35:39 · 1215 阅读 · 0 评论 -
cmake / target_** 中的 PUBLIC,PRIVATE,INTERFACE
一、指令说明target_include_directories():指定目标包含的头文件路径。官方文档target_link_libraries():指定目标链接的库。官方文档target_compile_options():指定目标的编译选项。官方文档目标 由 add_library() 或 add_executable() 生成。这三个指令类似,这里以 target_include_directories() 为例进行讲解。二、指令讲解测试工程目录结构:cmake-t转载 2021-09-24 07:22:25 · 341 阅读 · 0 评论 -
cmake / aux_source_directory
在目录中查找所有源文件。aux_source_directory(<dir> <variable>)收集指定目录中所有源文件的名称,并将列表存储在提供的变量中。该命令旨在供使用显式模板实例化的项目使用。 模板实例化文件可以存储在Templates子目录中,并使用此命令自动收集,以避免手动列出所有实例化。试图使用此命令来避免编写库或可执行目标的源文件列表。 尽管这似乎可行,但是CMake无法生成知道何时添加新源文件的生成系统。 通常,生成的构建系统知道何时需要重新运行转载 2021-09-18 07:30:46 · 1347 阅读 · 0 评论