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...