理解:cmake是乙個跨平台編譯器工具,它可以生成各種編譯檔案。本文主要是將如何通過cmake來編譯c++工程。它採取out-of-source(即中間產物與原始碼分離)方式。在c++中,可以認為cmake是將所有原始檔.h和.cpp都放在同乙個目錄下,來進行編譯和鏈結,最終生成工程。
1、工程目錄結構
payment
|-----bin //生成可執行程式資料夾
|-----var //存放日誌資料夾
|-----build //構建工程資料夾
|-----etc //配置資料夾
|-----include
//原始碼.h資料夾
|-----business
|-----common
|-----src //原始碼.cpp資料夾
|-----business
|-----common
|------cmakelists.txt (1)
|------cmakelists.txt (2)
(2)的檔案內容為:
#工程名字
project(paymentservice)
#cmkae最低版本,低於2.6會停止構建
cmake_minimum_required(version 2.6)
#指定編譯器和編譯方式
set(cmake_cxx_flags "-g -std=c++11 -lpthread")
#載入.h檔案,project_source_dir為cmake自定義變數,表示工程編譯的根目錄
include_directories(
$/include
$/include/business
$/include/common
#下面為使用第三方庫需要引進的.h檔案
/usr/include/pay
/usr/include/pay/wpaybl
/usr/include/pay/busiframe
/usr/include/pay/newdbdal/include
/usr/include/pay/dbdal/oracle
/usr/include/pay/route)
#表示要使用的庫檔案路徑
link_directories(/usr/libpay)
#設定輸出工程的路徑
set(executable_output_path $/bin)
#新增子cmakelists.txt路徑
add_subdirectory(src)
(1)的檔案內容
project(paymentservice) #
收集目錄中的檔名並賦值給變數
aux_source_directory(. src_list)
aux_source_directory(./business src_business_list)
aux_source_directory(./common src_common_list)
#檔案列表操作
#將列表加入可執行目標的編譯
add_executable(paymentserver $)
#設定單個可執行目標所需要連線的庫
target_link_libraries(paymentserver libace.so libjson_linux-gcc-4.1.2_libmt.so libprotobuf.so libcurl.so libmemcached.so libmemcachedutil.so libclntsh.so libnewdal.so liblog4cpp.so libbusiframe.a libwpaybl.a liblog4cplus.a libcpproute.a)
#cmake -dcmake_install_prefix=~ ..
#設定構建的路徑,控制make install是檔案會安裝到什麼地方,預設是/usr/local
set(install_dir "paymentservice/business")
install(targets paymentserver runtime destination $/bin)
三 使用 CMAKE 編譯工程
2017.09.08 使用cmake編譯工程 學習使用cmake編譯工程 一 在終端內編譯 需要首先簡單介紹cmakelists的命令列 例 宣告要求的 cmake 最低版本 cmake minimum required version 2.8 宣告乙個 cmake 工程 project hello...
CMake 工程呼叫 Makefile 編譯專案
本文主要介紹如何將乙個依賴 makefile 專案 midg 移植到 cmake 上。首先介紹專案檔案結構,檔案主要由三個目錄組成 3rdparty include src其中,3rdparty中包含兩個外部函式庫,即metis與parmetis,生成兩個靜態鏈結庫libmetis.a與libpar...
新建工程並用cmake編譯和安裝
本文介紹新建標準的cmake工程及使用cmake編譯 cmakelists的編寫 編譯和安裝標準的cmake工程。1 cmake工程目錄結構 在cmake工程中有不同的資料夾。資料夾結構通常如下。2 資料夾介紹 src 原始檔所在位置的目錄 include 標頭檔案所在位置的目錄 build 編譯生...