如何使用CMake構建工程

2021-10-24 05:14:36 字數 2173 閱讀 9694

本文舉乙個簡單的使用cmake構建c++工程的例子。通過這個例子來看下如何使用cmake構建乙個c++工程。

cmakelists.txt    			# 總cmake

aaa-dir # 動態庫目錄

cmakelists.txt # 動態庫aaa的cmake

include-dir # 庫aaa對外的頭檔案目錄

aaa.h # 庫aaa對外的標頭檔案

aaa.cpp # aaa的cpp檔案

bbb-dir # 可執行檔案目錄

cmakelists.txt # 可執行檔案bbb的cmake

bbb.cpp # bbb的cpp檔案

# 指定工程名

project(

"sample" cxx)

# 設定路徑,cmake_install_prefix由cmake命令指定,比如 cmake . -dcmake_install_prefix=/usr

set(prefix $

)set(exec_prefix $

)set(libdir $/lib)

set(incdir $/include/aaa)

set(bindir $/bin)

# 指定版本

set(soversion "0"

)set(version $.1)

# 設定目錄名

set(lib_aaa_dir "aaa-dir"

)set(bin_bbb_dir "bbb-dir"

)# 設定子工程名

set(lib_aaa "aaa"

)set(bin_bbb "bbb"

)# 設定公共的巨集定義,如果需要的話

# add_definitions("-d_common_def_")

# 設定公共頭檔案目錄,如果有的話

# include_directories($/common-include)

add_subdirectory($)

add_subdirectory(

$)

# 設定頭檔案目錄

include_directories(

$/include-dir)

# 設定巨集定義,如果需要的話

# add_definitions("-d_lib_def_")

# 設定c++編譯選項,如果需要的話

# set(cmake_cxx_flags "$ $")

set(srcs

aaa.cpp

)# 新增動態庫,並配相關檔案

add_library(

$ shared $

)# 鏈結依賴庫,如果需要的話

# target_link_libraries($ $)

# 安裝動態庫和標頭檔案到指定位置

install(targets $ destination $

)install(directory $/include-dir/ destination $

)

# 新增依賴頭檔案目錄

include_directories(

"$/$/include-dir"

)# 設定巨集定義,如果需要的話

# add_definitions("-d_bin_def_")

set(srcs

bbb.cpp

)set(lib_so

-l$/$ -l$

)# 設定c++編譯選項,如果需要的話

set(cmake_cxx_flags "$ -fpie -pie"

)# 新增可執行檔案,並配相關檔案

add_executable($$

)# 新增依賴,保證動態庫aaa編譯完後,才編譯bbb

add_dependencies($$

)# 鏈結依賴庫

target_link_libraries($$

)# 安裝可執行檔案到指定位置,並指定許可權

install(targets $ destination $ permissions owner_read owner_write owner_execute world_execute)

CMake構建工程

目標 使用cmake構建多級的目錄的c 專案,包含動態庫的引用。檔案結構 cmakelists.txt 1 build lib 這裡存放動態庫 cmakelists.txt 2 lib bye cmakelists.txt 3 bye.cc 4 lib hello cmakelists.txt 5 ...

專案構建工具介紹(推薦使用cmake)

cmakelists.txt檔案,個人感覺是最好用的工具,支援多種ide的專案構建,而且vscode上面有相關外掛程式支援命令提示 project test aux source directory src code add executable test cmake多個編譯同時編譯可能不穩定,會出...

cmake構建qt工程

如何選擇?using cmake to build qt projects 一文中說 儘管如此,如果簡單qt的工程都不知道怎麼用 cmake 構建,複雜的工程,就更不知道如何使用 cmake 了。還是從簡單的學起吧 include include qdebug int main int argc,c...