cmake
luoganttcc
微信:luogantt
展开
-
Ubuntu升级Cmake的正确方式
Ubuntu升级Cmake的正确方式。转载 2023-01-04 14:59:49 · 342 阅读 · 0 评论 -
opencv 显示图片(直接)
├── build├── CMakeLists.txt├── hani.jpeg└── main.cppmain.cpp#include <iostream>#include <opencv2/opencv.hpp> using namespace cv;using namespace std; int main(void){ Mat image = imread("../hani.jpeg"); //MAT是原创 2021-11-24 18:25:48 · 845 阅读 · 0 评论 -
opencv 显示图片
代码结构├── build├── CMakeLists.txt├── hani.jpeg└── main.cppmain.cpp#include <stdio.h>#include <opencv2/opencv.hpp>using namespace cv;int main(int argc, char** argv ){ if ( argc != 2 ) { printf("usage: DisplayImage.out &l转载 2021-11-24 18:15:50 · 352 阅读 · 0 评论 -
cmake之 ADD_LIBRARY()
上一篇我分析了如何调用别人的第三方库,现在我继续分析如何构建一个库供他人使用。完成这个任务需要用到ADD_LIBRARY()1:ADD_LIBRARY()语法add_library(<name> [STATIC | SHARED | MODULE] [EXCLUDE_FROM_ALL] source1 [source2 ...]) :库的名字,直接写名字即可,不要写lib,会自动加上前缀的哈。[STATIC | SHARED | MODU原创 2021-11-24 11:58:41 · 294 阅读 · 0 评论 -
CMake常见变量——Project和CMake相关信息
linkCMAKE_AR: 静态库的归档工具的名称。这个变量指定了用于创建档案或静态库的程序的名称。CMAKE_ARGC: 在脚本模式下传给CMake的命令行参数的个数。当运行在-P脚本模式下,CMake设置该变量为命令行参数的个数。CMAKE_ARGV0: 在脚本模式下传给CMake的命令行的第一个参数。CMAKE_BINARY_DIR: 构建树的最外层路径,是当前CMake构建树的最外层的全路径。对于在源码中构建的情况,它与CMAKE_SOURCE_DIR的值一样。CMAKE_BUILD_TO原创 2021-11-24 09:59:37 · 840 阅读 · 0 评论 -
CMake的几种Include
CMake的几种Includeinclude_directories()target_include_directories()add_executable( xx.cpp xx.h)这三种方式都可以对当前项目添加引用路径。include_directories()include_directories()的影响范围最大,可以为CMakelists.txt后的所有项目添加头文件目录一般写在最外层CMakelists.txt中影响全局target_include_direct原创 2021-11-24 09:58:19 · 652 阅读 · 0 评论 -
DBoW2 cmake代码注释
cmake_minimum_required(VERSION 3.0)project(DBoW2)include(ExternalProject)#有时希望在编译代码时只编译一些指定的源码,可以使用cmake的option命令#https://blog.csdn.net/whahu1989/article/details/82078563#t8option(BUILD_DBoW2 "Build DBoW2" ON)option(BUILD_Demo "Build原创 2021-11-24 09:51:08 · 314 阅读 · 0 评论 -
Linux下CMake简明教程(10) 定义宏来控制打印的信息
假设我们有个main.c,其内容如下#include <stdio.h>int main(void){#ifdef WWW1 printf("hello world1\n");#endif #ifdef WWW2 printf("hello world2\n");#endif return 0;}可以通过定义宏来控制打印的信息,我们CMakeLists.txt内容如下,cmake_minimum_required(VERSIO原创 2021-11-24 09:51:41 · 330 阅读 · 0 评论 -
Linux下CMake简明教程(九) 添加控制选项
代码在git有时希望在编译代码时只编译一些指定的源码,可以使用cmake的option命令,主要遇到的情况分为2种:本来要生成多个bin或库文件,现在只想生成部分指定的bin或库文件对于同一个bin文件,只想编译其中部分代码(使用宏来控制)第1种情况假设我们现在的工程会生成2个bin文件,main1和main2,现在整体结构体如下,.├── bin├── build├── CMakeLists.txt└── src ├── CMakeLists.txt ├── m原创 2021-11-23 19:27:52 · 598 阅读 · 0 评论 -
Linux下CMake简明教程(八) 添加编译选项
有时编译程序时想添加一些编译选项,如-Wall,-std=c++11等,就可以使用add_compile_options来进行操作。这里以一个简单程序来做演示,main.cpp如下#include <iostream>int main(void){ auto data = 100; std::cout << "data: " << data << "\n"; return 0;}CMakeLists.txt内容如下,c原创 2021-11-23 19:19:10 · 1164 阅读 · 0 评论 -
Linux下CMake简明教程(七)对库进行链接
代码在git既然我们已经生成了库,那么就进行链接测试下。重新建一个工程目录,然后把上节生成的库拷贝过来,然后在在工程目录下新建src目录和bin目录,在src目录下添加一个main.c,整体结构如下,.├── bin├── build├── CMakeLists.txt├── src│ └── main.c└── testFunc ├── inc │ └── testFunc.h └── lib ├── libtestFunc.a原创 2021-11-23 19:13:27 · 983 阅读 · 0 评论 -
Linux下CMake简明教程(六)动态库和静态库的编译控制
代码在git有时只需要编译出动态库和静态库,然后等着让其它程序去使用。让我们看下这种情况该如何使用cmake。首先按照如下重新组织文件,只留下testFunc.h和TestFunc.c├── CMakeLists.txt├── lib└── testFunc ├── testFunc.c └── testFunc.h我们会在build目录下运行cmake,并把生成的库文件存放到lib目录下。CMakeLists.txt内容如下,cmake_minimum_required (原创 2021-11-23 18:40:04 · 731 阅读 · 0 评论 -
Linux下CMake简明教程(五)正规一点的组织结构
正规一点来说,一般会把源文件放到src目录下,把头文件放入到include文件下,生成的对象文件放入到build目录下,最终输出的elf文件会放到bin目录下,这样整个结构更加清晰。让我们把前面的文件再次重新组织下,..├── bin├── include│ ├── testFunc1.h│ └── testFunc.h└── src ├── main.cpp ├── testFunc1.cpp └── testFunc.cppcmake_minimum原创 2021-11-23 17:44:01 · 618 阅读 · 0 评论 -
Linux下CMake简明教程(四)不同目录下多个源文件
代码在git一般来说,当程序文件比较多时,我们会进行分类管理,把代码根据功能放在不同的目录下,这样方便查找。那么这种情况下如何编写CMakeLists.txt呢?我们把之前的源文件整理一下(新建2个目录test_func和test_func1),整理好后整体文件结构如下.├── build├── CMakeLists.txt├── main.c├── temp│ └── CMakeLists1.txt├── test_func│ ├── testFunc.c│ └── te原创 2021-11-23 17:05:03 · 827 阅读 · 0 评论 -
Linux下CMake简明教程(三)同一目录下多个源文件
如果在同一目录下有多个源文件,那么只要在add_executable里把所有源文件都添加进去就可以了。但是如果有一百个源文件,再这样做就有点坑了,无法体现cmake的优越性,cmake提供了一个命令可以把指定目录下所有的源文件存储在一个变量中,这个命令就是 aux_source_directory(dir var)。第一个参数dir是指定目录,第二个参数var是用于存放源文件列表的变量。我们在main.c所在目录下再添加2个文件,testFunc1.c和testFunc1.h。添加完后整体文件结构如下,原创 2021-11-23 16:56:12 · 521 阅读 · 0 评论 -
Linux下CMake简明教程(二)同一目录下多个源文件
接下来进入稍微复杂的例子:在同一个目录下有多个源文件。在之前的目录下添加2个文件,testFunc.c和testFunc.h。添加完后整体文件结构如下,(base) ledi@ledi-MRC-WX0:~/slam_md40/learn_orbslam/makfile_learn/CMake简明教程/c2$ tree .├── build├── CMakeLists.txt├── main.c├── testFunc.c└── testFunc.h1 directory, 4 files原创 2021-11-23 16:27:01 · 243 阅读 · 0 评论 -
Linux下CMake简明教程(一)简单入门
代码链接CMake是开源、跨平台的构建工具,可以让我们通过编写简单的配置文件去生成本地的Makefile,这个配置文件是独立于运行平台和编译器的,这样就不用亲自去编写Makefile了,而且配置文件可以直接拿到其它平台上使用,无需修改,非常方便。 一 安装CMakesudo apt install cmakecmake -versioncmake version 3.17.2CMake suite maintained and supported by Kitware (kitware.c原创 2021-11-23 16:21:32 · 564 阅读 · 0 评论