cmake編譯工程列子

2021-07-07 04:13:35 字數 2049 閱讀 7993

理解: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 編譯生...