1. 程式人生 > >01-cmake語法-基本

01-cmake語法-基本

一級目錄 當前 sts 語法 make 可執行文件 例子 鏈接 共享

本系列隨筆將結合 OpenCV 的 CMakeLists.txt 來講解 cmake 的語法。

這一節,主要介紹一下cmake語法的基本語法。

cmake語法的基本語法

# 執行
cmake . # 表示在當前目錄下執行 cmake
cmake .. # 表示在前一級目錄下執行 cmake
make # 在當前目錄下執行 make


# 語法
#1 設置 cmake 版本需求
cmake_minimum_required(VERSION 2.8)

#2 設置工程名
project( 工程名 )

#3 生成可執行文件
add_executable( 可執行文件名 cpp文件 )

#4 生成靜態庫
add_library( helloSLAM helloSLAM.cpp )

#5 生成共享庫
add_library( helloSLAMShared SHARED helloSLAM.cpp )

#6 鏈接可執行文件,xx.o
target_link_libraries(helloSLAM /home/chan/projects/SLAM/build_lib/libhelloSLAM.a)

#7 設置Debug模式
set( CMAKE_BUILD_TYPE "Debug" )

  

給出例子:

1. 文件名“helloSLAM.cpp”,編譯的可執行文件名為“helloSLAM”,不指定,默認為“a”。

Linux 下可執行文件沒有後綴名。

# cmake version requirment
cmake_minimum_required(VERSION 2.8)

# project name.
project( helloSLAM )

# generate exectuable file.
add_executable( helloSLAM helloSLAM.cpp )

  

2. 文件名“helloSLAM.cpp”,編譯生成 靜態庫 ,後綴名“.a”

# cmake version requirment
cmake_minimum_required( VERSION 2.8 )


# project name.
project( helloSLAM )

# generate library file.
add_library( helloSLAM libHelloSLAM.cpp )

  

3. 文件名“helloSLAM.cpp”,編譯生成 分享庫(不叫動態庫) ,後綴名“.a”

# cmake version requirment
cmake_minimum_required( VERSION 2.8 )


# project name.
project( helloSLAM )

# generate library file.
add_library( helloSLAMShared SHARED libHelloSLAM.cpp )

  

4. 加載靜態庫/分享庫,生成可執行文件。

# cmake version requirment
cmake_minimum_required(VERSION 2.8)

# project name.
project( helloSLAM )

# generate exectuable file.
add_executable( helloSLAM helloSLAM.cpp )

target_link_libraries(helloSLAM /home/chan/projects/SLAM/build_lib/libhelloSLAM.a)

  

本節參考來自高博《視覺SLAM14講》。

部分操作,可參考我的github:

https://github.com/Chenhui2018/SLAM/blob/master/notes/SLAM%E7%AC%94%E8%AE%B01%EF%BC%9A%E6%96%B0%E5%BB%BA%E5%B7%A5%E7%A8%8B%E5%92%8Ccmake.md

01-cmake語法-基本