SLAM14讲-CMake的使用
程序员文章站
2022-05-28 16:11:11
...
SLAM14讲-CMake的使用
一个小型的C++项目可能存在着很多依赖关系,一部分代码要编译成可执行文件,另一部分代码要编译成库文件。
这时,我们可以使用CMAKE来管理源代码,make命令编译整个工程。
其中的CMakeLists.txt文件相当于整个项目的说明书,它用于告诉cmake要对这个目录下的文件做什么事情。
在CMakeLists.txt文件中添加add_executable()来添加可执行文件,添加add_library()来添加库文件,添加target_link_libraries()链接库文件和可执行文件。
但是我们并不能直接调用库文件,并不知道里面的函数是什么,又该如何调用,为了使用这个库文件,我们还得给库文件写个说明书——头文件,来说明库文件里到底有什么。有了库文件和头文件时,才能调用这个库。
所以,一个最基本的c++项目得有CMakeLists.txt、可执行文件、库文件、头文件的源码才能运行。
书上的例子:
(1)库文件源码:
#include <iostream>
using namespace std;
void printhello(){
cout << "hello slam" << endl;
}
(2)头文件源码:
#ifndef LIBHELLOSLAM_H_
#define LIBHELLOSLAM_H_
void printhello();
#endif
(3)可执行文件源码:
#include "libhelloslam.h"
int main(int argc,char **argv){
printhello();
return 0;
}
(4)CMakeLists.txt:
cmake_minimum_required(VERSION 2.8)
project(HELLOSLAM)
add_library(hello libhelloslam.cpp)//库的名字叫hello
add_executable(usehello usehello.cpp)//可执行的名字叫usehello
target_link_libraries(usehello hello)//链接库和可执行文件
这时,必要的4个文件已经完成,再建一个build文件,将编译生成的中间文件全部丢进去。在build文件夹中使用cmake … 对上层的文件夹进行编译,最后使用make对工程编译。
编译完成后的build文件夹会生成许多东西,其中usehello是生成的可执行程序,使用 ./ 命令运行即可。
上一篇: SLAM14讲
下一篇: struts2使用拦截器实现权限控制
推荐阅读
-
Android 入门第十讲02-广播(广播概述,使用方法(系统广播,自定义广播,两个activity之间的交互和传值),EventBus使用方法,数据传递,线程切换,Android的系统广播大全)
-
[cmake 3.5]使用自身集成的FindProtobuf来生成并构建proto代码
-
WorkManager基本使用(调试计划讲执行的任务)
-
使用CMake编译时出现动态链接库错误no version information available的解决方案
-
Protobuf在Cmake中的正确使用方法详解
-
Android 入门第十讲02-广播(广播概述,使用方法(系统广播,自定义广播,两个activity之间的交互和传值),EventBus使用方法,数据传递,线程切换,Android的系统广播大全)
-
CMake的使用例子
-
手把手讲解在ubuntu16.04安装视觉SLAM14讲中的全部第三方库
-
视觉slam14讲VO前端设计中 std::min_element和lambda表达式的运用讲解
-
SLAM14讲 在macOS下编译遇到的问题