视觉SLAM十四讲 ch1~2
- 虚拟机部分
- 指令解析
- 在其他文件中进行引用该库
- 编译器
- 参考链接:
虚拟机部分
CMakeList.txt文件是cmake用来生成Makefile文件需要的一个描述编译链接的规则文件
指令解析
(1)PROJECT(projectname [CXX] [C] [Java]):
该函数定义工程名字,并指定了工程的语言,支持语言的列表可以省略,默认情况下表示支持所有语言,并隐式定义了两个cmake的变量
PROJECT_BINARY_DIR:执行cmake的目录
PROJECT_SOURCE_DIR:工程的根目录
(2)add_executable(可执行文件名 1.cpp 2.ppp …)
添加可执行文件,其中可执行文件需要用到1.cpp和2.cpp 工程会给1.cpp和2.cpp编译生成一个可执行文件
当前文件下有CMakeList.txt和main.cpp两个文件,通过指令:“cmake . ”表示编译当前目录,会生成makefile文件,直接调用make对整个工程进行编译。
优点:由重写一行一行c++,变成只维护一个list文件。
使用cmake . 生成一堆中间文件,这些中间文件我们并不是很想要,需要删除:“rm .rf"
解决办法:
1、新建一个文件夹 mkdir build
2、进入文件夹内,对上层文件进行编译 “cmake …”
产生的中间文件都在build里面,不想要直接删除build文件夹
在其他文件中进行引用该库
库文件hello.cpp其中包含函数printHello(),
1、add_library(生成的库名称 STATIC/SHARED 源文件.cpp)
将源文件生成 静态/动态 库文件 STSTIC 表示静态库最终会编入到可执行文件中,SHARED(常见参数)表示动态库(又称共享库)方式
编译后生成libhello.a的文件,可以通过其调用hello.cpp中的函数
为了调用我们需要一个头文件函数,hello.h,其中对printHello()函数进行声明
在hello.h中声明函数,在hello.cpp中提供函数的实现。
hello.h和hello.cpp就构成了一个完整的库,这个库就可以在别的程序中进行调用。
编译后,写一个简单的函数进行调用。
vim useHello.cpp创建文件引用
可执行程序怎么写:
1、vim CMakeList.txt
2、添加可执行文件useHello
3、将可执行文件链接到hello库上面。
target_link_libraries (库/可执行文件 library1 library2 …)
为库或者可执行文件添加需要链接的库
编译器
sudo apt-get install kdevelop
直接支持cmake的c++
自动生成一个build目录,调用cmake进行编译。
参考链接:
CMakeLists.txt详解:https://blog.csdn.net/m0_53685032/article/details/126988487.