project(projectname)
: 指定工程名稱
set(var [value])
: 定義變數
message [send_error | status | fatal_error]
「message to display」): 向終端輸出資訊
# 輸出build type資訊
message(status "build type:"
$)
cmake中指定生成檔案的輸出路徑
# 設定二進位制可執行檔案輸出路徑
set(executable_output_path $/bin)
# 設定庫檔案輸出路徑
set(library_output_path $/lib)
cmake中指定原始碼檔案路徑
aux_source_directory(dir var)
: 新增原始檔路徑dir,並指定變數名var
# 定義原始碼目錄列表變數
)# 遍歷原始碼目錄列表
foreach(sub_dir $
)# 將原始碼目錄設定為頭檔案目錄
include_directories(
$/src/$
# 將所有的原始檔路徑存入sub_list
aux_source_directory(/src/$ sub_list)
endforeach(
)
cmake中生成動態庫和靜態庫
add_library(target [shared | static] src_list)
: 生成靜態庫檔案或共享庫檔案
target_link_libraries(target libother)
: 鏈結需要的庫檔案
set_target_properties(target properties [output_name | version ...] value)
: 設定target屬性值
# 生成demo_shared動態庫檔案
add_library(
$_shared shared $
)# 鏈結需要用到的庫檔案pthread
target_link_libraries(
$_shared pthread)
# 修改庫檔名稱為demo,系統自動改為libdemo
set_target_properties(
$_shared properties
output_name "$"
)# 生成demo_static靜態庫檔案
add_library(
$_static staitc $
)# 鏈結需要用到的庫檔案pthread
target_link_libraries(
$_static pthread)
# 修改庫檔名稱為demo,系統自動改為libdemo
set_target_properties(
$_static properties
output_name "$"
)
cmake中生成可執行檔案
)cmake中安裝檔案
普通檔案安裝:
install
(files readme.md destination ~/doc)
指令碼檔案安裝:
install
(programs build.sh destination bin)
目錄檔案安裝:
install
(directory hello/ destination ~/doc)
二進位制檔案安裝
install
(targets cpp runtime destination bin)
庫檔案安裝
set
(install_path_lib lib)
install
(targets $_shared
archive destination $
library destination $
)install
(targets $_static
archive destination $
library destination $
)
cmake常用命令
設定cmake支援的最低版本 cmake minimum required version 2.6 複製 配置專案名稱,使用此命令後會自動生成 pname binary dir變數 二進位制檔案儲存路徑 pname source dir 源 路徑 project 工程名稱 複製 設定版本號 set ...
Cmake 常用命令
1.需要最低的cmake版本 cmake mininum require version 版本號 2.cmake編譯的工程名字 project 工程名字 3.把根目錄下下面的.txt檔案全都移到編譯的二進位制檔案目錄底下 file glob my files txt file copy destin...
cmake常用命令
內建函式 add library lib name source list 生成靜態庫 add library so name shared source list 生成動態庫 aux source directory dir var 將所有的 dir 都賦值給 var add definition...