欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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对工程编译。
SLAM14讲-CMake的使用
编译完成后的build文件夹会生成许多东西,其中usehello是生成的可执行程序,使用 ./ 命令运行即可。
SLAM14讲-CMake的使用