Cmake學習筆記

2021-10-05 03:20:07 字數 2768 閱讀 8718

參考:

project (hello)

# 指定工程名

cmake_minimum_required(version 3.14)

# 指定 cmake 最低編譯版本

#獲取指定目錄下的原始檔(.c,.cu,.cpp)

#方式一:

aux_source_directory($/src src_list)

#方式二:

file(glob src_list "$/src/*.c*")#正則匹配

#列印資訊

#message還有很多用法,可以參考

message(status $)

# 指定工程名

project (hello)

# 現階段,你只需要了解 set 指令可以用來顯式的定義變數即可

# 將 hello.cpp 賦值給 src_list 變數,也可以指定多個原始檔,用空格隔開

# set(src_list hello.cpp add.cpp sub.cpp)

set(src_list hello.cpp)

# 輸出列印構建目錄

message(status "this is hello_binary_dir " $)

# 輸出列印資源目錄

message(status "this is hello_source_dir " $)

# 輸出列印資源目錄,與hello_source_dir 一樣

message(status "this is project_source_dir " $)

# 輸出列印 cmake 資源目錄,與 project_source_dir 一樣

message(status "this is cmake_source_dir " $)

# 生成可執行檔案 hello ,$是引用變數,也就是原始檔 hello.cpp

add_executable(hello $)

mkdir 新建 3 個目錄分別為 src、libs、include 。src 用來存放原始檔 add.ccp、sub.cpp、div.cpp。include 用來存放標頭檔案 add.h、div.h、sub.h 。原始碼如下:

#include "add.h"

int add(int num1, int num2)

#include "sub.h"

int sub(int num1, int num2)

#include "div.h"

int div(int num1, int num2)

基於這些準備工作,我們想用 cmake 來構建乙個 libmath.so 動態庫,並且將其生成在 libs 目錄資料夾下。 

# 指定 cmake 最低編譯版本

cmake_minimum_required(version 3.14)

project (math)

# 把當前工程目錄下的 src 目錄的下的所有 .cpp 和 .c 檔案賦值給 src_list

aux_source_directory($/src src_list)

file(glob src_list "$/src/*.cpp")

# 列印 src_list 檔案列表

# message(status $)

# 指定頭檔案目錄

include_directories($/include)

# 指定輸出 .so 動態庫的目錄位置

set(library_output_path $/lib)

# 指定生成動態庫

add_library(math shared $)

# 指定生成版本號,version指代動態庫版本,soversion指代api版本

# set_target_properties(math properties version 1.2 soversion 1)

3. 鏈結外部動態庫和標頭檔案

將 libs 目錄和 include 目錄 copy 到 hello.cpp 同級目錄下,修改 hello.cpp 原始碼如下:

#include #include "add.h"

#include "sub.h"

#include "div.h"

int main(int argc, char* ar**)

現在我引用了 include 目錄下的標頭檔案,同時需要鏈結 libs 目錄下的 libmath.so ,我們再次建立乙個 cmakelists.txt 來生成可執行檔案 hello。

# 指定cmake最低編譯版本

cmake_minimum_required(version 3.14)

# 指定工程的名稱

project(hello)

#指定頭檔案目錄位置

include_directories($/include)

#新增共享庫搜尋路徑

link_directories($/lib)

#生成可執行檔案

add_executable(hello hello.cpp)

#為hello新增共享庫鏈結

target_link_libraries(hello math)

CMake學習筆記

cmake是乙個跨平台的安裝編譯工具,能夠生成各種各樣的makefile或者project檔案。cmake並不直接構建出最終的軟體,而是產生標準的構建檔案 即工程檔案,如unix下的makefile或windows下的c project檔案 然後構建者就可以使用平台的ide環境進行常規構建了。在wi...

CMAKE學習筆記

方法1 cmake中有兩個變數用於指定輸出檔案的位置,通過設定這兩個變數executable output path和library output path的值指定exe檔案和lib檔案放置的目錄,如 set executable output path set library output pat...

Cmake學習筆記

環境 centos7 cmake version 2.8.12.2 常用命令 cmake minimum directoy viersion 2.8 注 version只能大寫 project your project name 這個順序一定要靠前,不然後面會有報錯 aux source direc...