Cmake使用例程

2021-08-07 16:03:51 字數 3092 閱讀 3196

cmake使用例程如下

(1)cmake工具需要核心支援sctp模組,需要安裝sctp開發包:lksctp - tools 以及lksctp - tools - devel

(2)在linux系統內安裝cmake

(3)如何建立乙個包含多個源資料夾的工程

本文這裡以socket 通訊為例:

(1)新建以下資料夾

build、server、client、includes、pubs五個資料夾

build:是構建工程時需要的資料夾,裡面包含client工程和server工程兩個資料夾

server:是存放server.c(伺服器端源**) 和server.h(伺服器端源**標頭檔案)檔案的源資料夾

client:是存放client.c(客戶端源**)和client.h(客戶端源**標頭檔案)檔案的源資料夾

includes:是存放公共使用的標頭檔案,裡面包含include.h(可以將常使用的庫檔案包含在這裡)

pubs:是存放公用函式的檔案,此處裡面包含出錯記錄檔案error_log.c(出錯記錄函式)和error_log.h(出錯記錄函式標頭檔案)

(2)新建好以上資料夾和相應的**之後,在資料夾中編寫cmakelists.txt檔案

build目錄是工程構建的目錄,這裡不需要編寫cmakelists.txt

include目錄是只包含的頭檔案目錄,也不需要編寫cmakelists.txt檔案

因此只 需要在一下三個檔案中中編寫cmakelists.txt檔案

1:pubs:中的cmakelists.txt檔案內容如下,由於是公用檔案包含公用的**,因此只編譯生成相應的庫檔案就好。

# 這個檔案是公用的檔案,裡面的函式別的**也需要呼叫,因此把他編譯成庫檔案,

# 這裡設定庫檔案的路徑就是當前路徑,注意(. dir_pubs_srcs)中的pubs就是這個資料夾的名稱

aux_source_directory(. dir_pubs_srcs)

# 設定編譯後生成的庫檔名稱,別的程式再編譯的時候,如果呼叫了這裡面的函式就會鏈結這個庫檔案

add_library ( pubs $)

2:client:中的cmakelists.txt檔案內容如下

# cmake版本的最低要求

cmake_minimum_required ( version 2.8 )

# 工程名字

project (client)

# 設定cmake編譯之後保留源**

set(cmake_c_flags  "$ -std=c99")

# 設定cmake編譯之後生成的可執行檔案是debug版本

set(cmake_cxx_flags_debug "$env -o0 -wall -g -ggdb")

# 設定cmake編譯之後生成的可執行檔案是relese版本

#set(cmake_cxx_flags_release "$env -o3 -wall")

# 設定編譯查詢庫名稱

find_package(threads required)

# 設定包含的檔案路徑,這裡我們需要包含includes 和公用的pubs兩個檔案

include_directories(../includes ../pubs)

# 設定子檔名稱(就這這個原始檔包含的資料夾,這裡就是軟連線的檔名)

add_subdirectory(pubs)

# 設定原始檔的位置就是當前資料夾

aux_source_directory(. dir_srcs)

# 設定生成可執行檔案的名稱

add_executable(client $)

# 設定生成可執行檔案時需要鏈結的庫檔案,這裡也就是我們公用的pubs編譯後生成的.o檔案

target_link_libraries(client pubs $)

3:server:中的cmakelists.txt檔案內容如下和上面類似

# cmake版本的最低要求

cmake_minimum_required ( version 2.8 )

# 工程名字

project (server)

# 設定cmake編譯之後保留源**

set(cmake_c_flags  "$ -std=c99")

# 設定cmake編譯之後生成的可執行檔案是debug版本

set(cmake_cxx_flags_debug "$env -o0 -wall -g -ggdb")

# 設定cmake編譯之後生成的可執行檔案是relese版本

#set(cmake_cxx_flags_release "$env -o3 -wall")

# 設定編譯查詢庫名稱

find_package(threads required)

# 設定包含的檔案路徑,這裡我們需要包含includes 和公用的pubs兩個檔案

include_directories(../includes ../pubs)

# 設定子檔名稱(就這這個原始檔包含的資料夾,這裡就是軟連線的檔名)

add_subdirectory(pubs)

# 設定原始檔的位置就是當前資料夾

aux_source_directory(. dir_srcs)

# 設定生成可執行檔案的名稱

add_executable(server $)

# 設定生成可執行檔案時需要鏈結的庫檔案,這裡也就是我們公用的pubs編譯後生成的.o檔案

target_link_libraries(server pubs $)

(3)進入client資料夾和server資料夾執行

ln -s ../pubs pubs

(將上一層目錄中的pubs目錄軟連線到這裡,為什麼藥進行軟連線呢?就是因為這裡使用了pubs中的檔案的**)

(4)進入build目錄,新建兩個工程檔案server和client,如果只有乙個工程就建乙個工程名就好

執行 cmake ../../server (生成對應makefile檔案) 再執行make

cmake ../../client (生成對應的makefile檔案)再執行make

(5)執行上述操作之後,如果沒有錯誤就會出現相對應的可執行檔名,這裡是server和client

cmake使用範例

cmake作為一款跨平台的專案構建工具,其使用範圍已經越來越廣,本文以實際專案為例,展示乙個使用該編譯工具的模板。希望我們都能在這些高效的工具幫助下都享受程式設計的樂趣。project src libs modules includes build bin cmakelists 根目錄下cmakel...

CMake使用整理

cmake是乙個跨平台的安裝 編譯 工具,可以用簡單的語句來描述所有平台的安裝 編譯過程 它使用乙個名為 cmakelists.txt 的檔案來描述構建過程,可以產生標準的構建檔案,如 unix 的 makefile 或windows visual c 的 projects workspaces 檔...

筆記 cmake 使用

1.新增路徑 add subdirectory replay 2.新增執行程式 add executable replay replay.cc 3.設定專案檔案路徑 set target properties replay properties folder replay 4.設定依賴庫 targe...