CMAKE基本使用

参考几个有用的博客:

电子书:Cmake实战 

Cmake入门实战:

在Linux下使用Cmake编译程序

Cmake学习笔记


实际简单操作举例:

举例说明:CMake 构建 HelloSlam 工程

  1. Ctrl + Alt + T 按键打开终端
  2. 在选定路径下建立工程文件夹: 
    $ mkdir HelloSlam
  3. 构建 HelloSlam 的文件目录结构 
    $ cd HelloSlam 
    $ mkdir bin build include lib src 
    • bin      用来存放编译好的可执行二进制文件
    • build 在该文件夹下运行 cmake ,这样就不会污染源代码, 如果不想要这些自动生成的文件,只要简单的删除 build 文件夹就可以
    • include 用来放头文件
    • lib          用来放编译好的库文件
    • src         用来放源代码
  4. 文件目录结构 
    HelloSlam_01.png
  5. 文件内容

    • src/main.cpp

            #include <iostream>
            #include "CHello.h"
            int main(int argc,char** argv)
            {
                 CHello myhello;
                 myhello.print();
                 return 1;
            }
           
           
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
    • include/CHello.h

           #ifndef HELLO_HEADER_H
           #define HELLO_HEADER_H
      
           class CHello
           {
           public:
      
             CHello(){}
      
             ~CHello(){}
      
             void print();
           };
      
           #endif
           
           
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
    • src/CHello.cpp

           #include <iostream>
           #include "CHello.h"
      
           void CHello::print()
           {
               std::cout << "hello slam..." << std::endl;
           }
           
           
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
    • CMakeLists.txt

           # 声明要求的 cmake 最低版本
           CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
      
           # 声明一个 cmake 工程
           PROJECT(HELLOSLAM)
      
           # 设置编译器
           SET(CMAKE_CXX_COMPILER "g++")
      
           # 设置编译模式 (Debug/Release)
           SET(CMAKE_BUILD_TYPE "Debug")
      
           # 显示执行构建过程中详细的编译信息
           SET(CMAKE_VERBOSE_MAKEFILE on)
      
           # 指定可执行文件目录
           SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
      
           # 指定库文件目录
           SET(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)
      
           # 指定头文件目录
           INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/include)
      
           # 指定源文件目录
           SET(SOURCE_DIR ${PROJECT_SOURCE_DIR}/src)
      
           # 增加一个可执行的二进制文件
           ADD_EXECUTABLE(HelloSlam ${SOURCE_DIR}/main.cpp)
      
           # 生成库文件:libhello.so
           ADD_LIBRARY(hello SHARED ${SOURCE_DIR}/CHello.cpp)
      
           # 将库文件链接到可执行程序
           TARGET_LINK_LIBRARIES(HelloSlam hello)   
           
           
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
      • 27
      • 28
      • 29
      • 30
      • 31
      • 32
      • 33
      • 34
      • 35
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
      • 27
      • 28
      • 29
      • 30
      • 31
      • 32
      • 33
      • 34
      • 35
  6. 运行程序 
    $ cd build 
    $ cmake .. 
    $ make 
    $ ../bin/HelloSlam 
    终端输出: hello slam…



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值