Ubuntu下克隆git项目和cmake的基本功能使用

  1. 先克隆一份高翔的GitHub上的工程项目

    安装git
    sudo apt-get install git
    建立一个文件夹,把要克隆的项目放到该文件夹下
    cd /
    mkdir gaoxiang_slambook
    cd gaoxiang_slambook
    克隆项目
    git clone https://github.com/jiajunhua/gaoxiang12-slambook
    
  2. 新建一个helloSLAM.cpp

    在/slambook/ch2下创建一个helloSLAM.cpp
    cd /
    mkdir slambook
    cd /slambook
    mkdir ch2
    cd ch2
    sudo gedit helloSLAM.cpp #会直接创建好,并且打开编辑
    
  3. 通过g++将helloSLAM.cpp编译成可执行文件。

    g++ helloSLAM.cpp  #顺利则无任何输出
    
    同时生成了一个a.out文件,并具有执行权限。
    ./a.out   #会输出helloSLAM.cpp的执行结果
    
  4. cmake使用(帮解决代码的依赖关系)(如何在文档中输入中文暂未解决

    在slambook/ch2/中新建一个CMakeLists.txt文件,这个文件主告诉我们要对这个目录下的文件做什么
    sudo gedit CMakeLists.txt
    cmake .  #调用cmake对该工程进行分析,会生成MakeFile等中间文件
    make     #编译该工程
    ./helloSLAM    #执行在CMakeLists.txt中声明的可执行程序helloSLAM,会输出helloSLAM.CPP的执行结果
    
    解析一下下图:
    第一行是声明要求的cmake最低版本
    project(HELLOSLAM)是声明一个cmake工程
    add_executable( helloSLAM helloSLAM.cpp ) 是添加一个可执行程序,(程序名 源代码文件)
    

    在这里插入图片描述

  5. cmake将生成的中间文件统一放到build文件夹中(便于以后发布时,删除这些中间文件)
    在此操作前,先删除之前产生的所有中间文件,不然你分析这个工程时,它会检测到已经有这个Makefile文件,而不会再重新生成一个新的Makefile文件到build文件夹里了

    mkdir build
    cd build
    cmake ..   #两个点点是指对上一层文件夹,即代码所在文件夹进行编译
    make
    
  6. 删除文件夹
    -r 强制删除
    -f 不提示

    rm 可以理解成remove
    sudo rm -r 文件夹名    #表示强制删除并提示
    sudo rm -rf 文件夹名   #表示强制删除不提示
    
  7. 返回前面的目录

    cd - (cd 减号) 返回上次访问的目录
    cd .. 返回上一级目录
    cd ~ 返回home目录
    
  8. cmake生成(带main函数的文件才能生成可执行程序,其他会打包成一个库)
    静态库每次被调用都会生成一个副本,而共享库则只有一个副本,更省空间

    生成静态库语句  .a作为后缀名
    add_library(hello libHelloSLAM.cpp)    #把文件编译生成一个叫做“hello”的库,文件名libhello.a
    生成共享库语句  .so作为后缀名
    add_library(hello_shared SHARED libHelloSLAM.cpp)  #得到文件libhello_shared.so
    

    头文件是说明这个库里面提供了哪些方法,只要拿到头文件和库文件,就能调用该库。

    编写libhello的头文件
    #ifndef LIBHELLOSLAM_H_
    #define LIBHELLOSLAM_H_
    void printHello();
    #endif
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值