CMAKE基本使用

来源:互联网 发布:淘宝防排查软件 编辑:程序博客网 时间:2024/05/22 16:43

参考几个有用的博客:

电子书: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…



原创粉丝点击