DoubleLi

qq: 517712484 wx: ldbgliet

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

随笔分类 -  cmake/autotool

1 2 3 4 5 下一页

摘要:PROJECT_SOURCE_DIR 和 CMAKE_SOURCE_DIR对比 在 CMake 中,PROJECT_SOURCE_DIR和CMAKE_SOURCE_DIR是两个非常重要的变量,它们都指向项目的源代码目录,但在多项目(子项目或多个 CMakeLists.txt 文件)的情况下,它们的值 阅读全文
posted @ 2024-05-20 15:05 DoubleLi 阅读(27) 评论(0) 推荐(0) 编辑

摘要:CMake 设置 Debug 和 Release 的不同配置 文章目录 CMake 设置 Debug 和 Release 的不同配置 I - 原因 II - 如何设置 2.1 - 配置不同的库 2.2 - 配置不同的宏 I - 原因 由于 Debug 和 Release 下工程的依赖库不同,另外,方 阅读全文
posted @ 2024-05-20 10:56 DoubleLi 阅读(76) 评论(0) 推荐(0) 编辑

摘要:最前# 本文将介绍一种以源码的方式引入第三方库的方法 准备# 主项目,需要引用第三方库的某些函数 第三方库,以源码的形式提供给主项目使用 注意: 本文的背景:已经将第三方源码下载好。 一个例子# 我这里准备一个简单的项目,调用第三方库 fmt;其中fmt是以源码的形式引入项目 cmake versi 阅读全文
posted @ 2024-05-20 10:21 DoubleLi 阅读(9) 评论(0) 推荐(0) 编辑

摘要:note# 本文将介绍使用FIND_PACKAGE配置项目动态库的方法 cmake version: 3.18 platform: win10 20H2 概述# 创建了一个动态库,再由主项目调用该动态库。 find<lib库名>.cmake的内容是: 1.定义动态库的头文件所在路径 2. 定义库所在 阅读全文
posted @ 2024-05-20 10:19 DoubleLi 阅读(16) 评论(0) 推荐(0) 编辑

摘要:单个.cpp源文件的情况 用这段代码进行测试,CMake 中添加一个可执行文件作为构建目标: #include <cstdio> int main() { printf("Hello, world!\n"); } 指定源文件的时候可以有两种方式。 在创建目标的时候直接指定源文件 add_execut 阅读全文
posted @ 2024-05-20 10:12 DoubleLi 阅读(24) 评论(0) 推荐(0) 编辑

摘要:在CMake中,find_package和find_library都是用来找到和链接库的方法,但它们的用法和适用场景略有不同。 find_package主要用于寻找具有CMake配置文件的库,这些库通常遵循CMake的规范,提供了用于导入目标、库路径、头文件路径等的配置文件。这使得使用find_pa 阅读全文
posted @ 2024-05-06 16:57 DoubleLi 阅读(47) 评论(0) 推荐(0) 编辑

摘要:1. find_package的作用与实例 用来查找第三方依赖包的 .cmake文件,并根据.cmake文件生成依赖包的头文件目录和库文件路径等; CMakeLists.txt实例 find_package(Protobuf REQUIRED) include_directories(${PROTO 阅读全文
posted @ 2024-05-06 16:51 DoubleLi 阅读(380) 评论(0) 推荐(0) 编辑

摘要:刚刚接触Cmake的时候,对于find_package的用法以及背后的原理经常一头雾水,官方文档比较晦涩难懂,网上的博客也都讲解的比较片面。这里通过实战代码案例进行一下详细的总结讲解。帮助自己加深理解的同时,也希望帮到更多的初学者。 此处所有代码均可在我的github项目中找到,欢迎star。后续内 阅读全文
posted @ 2024-05-06 16:50 DoubleLi 阅读(113) 评论(0) 推荐(0) 编辑

摘要:Ubuntu升级Cmake的正确方式 某些软件包编译时需要高版本的Cmake,因此需要升级Cmake。 不能使用 sudo apt-get remove cmake卸载低版本cmake后再重装高版本,这样做会导致之前编译和安装的很多库一起被卸载!!! 正确步骤是: 去https://cmake.or 阅读全文
posted @ 2023-06-07 10:00 DoubleLi 阅读(502) 评论(0) 推荐(0) 编辑

摘要:CMake语法—选项(option) 1 选项 1.1 定义 1.2 说明 variable 选项名 help_text 描述、解释、备注 value 选项初始化值(除ON而外全为OFF) 2 应用注意事项 2.1 代码结构 learn_cmake:为根目录 build:为CMake配置输出目录(在 阅读全文
posted @ 2023-02-01 10:26 DoubleLi 阅读(427) 评论(0) 推荐(0) 编辑

摘要:option的命令形式如下 option(<variable> "<help_text>" [value]) option简介 cmake中option起到编译开关的作用,CMakeLists.txt中option以前的语句,变量按未定义处理,option之后的语句,变量才被定义。另外,注意,opt 阅读全文
posted @ 2023-02-01 10:24 DoubleLi 阅读(283) 评论(0) 推荐(0) 编辑

摘要:CMake option使用场景 : 编译脚本传递参数 -> CMake脚本接收option -> 源代码宏 1.编译脚本传入参数传入一个cmake option TEST_DEBUG #!/bin/sh cmake -DTEST_DEBUG=ON . cmake --build . 2.CMake 阅读全文
posted @ 2023-02-01 10:13 DoubleLi 阅读(108) 评论(0) 推荐(0) 编辑

摘要:商业程序如何加载自己的so 使用LD_LIBRARY_PATH的缺点是要实现设置LD_LIBRARY_PATH。不够自动化。那么大型的商业程序是如何加载自己的so呢。 这里以QtCreator为例。 QtCreator安装在/home/xxx/Qt5.3.1目录下。使用ldd查看qtcreator依 阅读全文
posted @ 2022-11-22 19:18 DoubleLi 阅读(811) 评论(0) 推荐(0) 编辑

摘要:通过cmake编译链接动态库后,会有一个问题,那就是需要的.so文件不能更改目录,一旦.so文件目录变了,整个程序就没法运行了,这肯定是不行的。 原因 后来我查一下一下,linux系统中,程序加载运行需要的.so文件是有顺序的 环境变量LD_LIBRARY_PATH指定的路径 gcc 编译时指定的运 阅读全文
posted @ 2022-11-22 19:15 DoubleLi 阅读(1420) 评论(0) 推荐(0) 编辑

摘要:编译C/C++文件时,很多时候都是直接使用像 gcc main.c 或者 g++ main.cpp 这样的命令编译的。但是代码文件多了后,这样编译就很困难了。这时候 就出现了MakeFile 这个工具。 MakeFile 解决了多个文件编译难的问题,有了MakeFile,只需要在MakeFile的目 阅读全文
posted @ 2022-11-22 19:13 DoubleLi 阅读(1041) 评论(0) 推荐(0) 编辑

摘要:反复研究好几遍,我才发现关于 CMake 变量还可以这样理解!​ 摘要: 本文记录一下 CMake 变量的定义、原理及其使用。CMake 变量包含 Normal Variables、Cache Variables。通过 set 指令可以设置两种不同的变量。也可以在 CMake 脚本中使用和设置环境变 阅读全文
posted @ 2022-09-06 14:37 DoubleLi 阅读(465) 评论(0) 推荐(0) 编辑

摘要:一,cmake 变量引用的方式: 前面我们已经提到了,使用${}进行变量的引用。在 IF 等语句中,是直接使用变量名而不通过${}取值 二,cmake 自定义变量的方式: 主要有隐式定义和显式定义两种,前面举了一个隐式定义的例子,就是 PROJECT 指令,他会隐式的定义<projectname>_ 阅读全文
posted @ 2022-09-06 14:02 DoubleLi 阅读(551) 评论(0) 推荐(0) 编辑

摘要:对于简单的项目,将所有内容保存在一个目录中是可以的,但是大多数实际项目倾向于将它们的文件分割到多个目录中。通常可以找到不同的文件类型或分组在各自的目录下的独立模块,或者将属于逻辑功能组的文件放在项目目录层次结构的各自部分中。虽然目录结构可能由开发人员对项目的看法驱动,但项目的结构方式也会影响构建系统 阅读全文
posted @ 2022-09-06 11:09 DoubleLi 阅读(1311) 评论(0) 推荐(0) 编辑

摘要:经常在Linux下面写C++程序,尤其是需要集成各种第三方库的工程,肯定对find_package指令不陌生。 这是条很强大的指令。可以直接帮我们解决整个工程的依赖问题,自动把头文件和动态链接文件配置好。比如说,在Linux下面工程依赖了OpenCV,只需要下面几行就可以完全配置好: add_exe 阅读全文
posted @ 2022-09-06 11:06 DoubleLi 阅读(679) 评论(0) 推荐(0) 编辑

摘要:find_package find_package用于加载第三方库,可以将需要的部分指定为组件,例如使用包 nodelet:find_package(catkin REQUIRED COMPONENTS nodelet)。例如,使用 Boost 时加载线程组件: 1 find_package(Boo 阅读全文
posted @ 2022-09-06 11:03 DoubleLi 阅读(1544) 评论(1) 推荐(1) 编辑

1 2 3 4 5 下一页