cmake 學習筆記 二

2021-05-25 02:03:03 字數 3024 閱讀 7161

在 cmake學習筆記一 中通過一串小例子簡單學習了cmake 的使用方式。

這次應該簡單看看語法和常用的命令了。

# 我是注釋
command(引數1 引數2 ...)
a;b;c # 分號分割或空格分隔的值
set(foo a b c)

設定變數 foo

command($)

等價於 command(a b c)

command("$")

等價於 command("a b c")

command("/$")

轉義,和 a b c無關聯

if()...else()/elseif()...endif()

while()...endwhile()

foreach()...endforeach()

include_directories( "dir1" "dir2" ... )

標頭檔案路徑,相當於編譯器引數 -idir1 -idir2

link_directories("dir1" "dir2")

庫檔案路徑。注意:

由於歷史原因,相對路徑會原樣傳遞給鏈結器。

盡量使用find_library而避免使用這個。

aux_source_directory( 「sourcedir」 variable)

收集目錄中的檔名並賦值給變數

add_executable

可執行程式目標

add_library

庫目標add_custom_target

自定義目標

add_dependencies( target1 t2 t3 )

目標target1依賴於t2 t3

add_definitions( "-wall -ansi")

本意是供設定 -d... /d... 等編譯預處理需要的巨集定義引數,對比 remove_definitions()

target_link_libraries( target-name lib1 lib2 ...)

設定單個目標需要鏈結的庫

link_libraries( lib1 lib2 ...)

設定所有目標需要鏈結的庫

set_target_properties( ... )

設定目標的屬性 output_name, version, ....

message(...)

install( files 「f1」 「f2」destination . )

destination 相對於 $

set( var value [cache type docstring [force]])

列表操作

string( toupper|tolower|length| substring|replace|regex ...)

字串操作

separate_arguments( var )

轉換空格分隔的字串到列表

檔案操作

find_file

注意 cmake_include_path

find_path

注意 cmake_include_path

find_library

注意 cmake_library_path

find_program

find_package

注意 cmake_module_path

exec_program( bin [work_dir] args <..> [output_variable var] [return_value var] )

執行外部程式

option( option_var 「description」 [initial value] )

這三個變數指代的內容是一致的,是工程頂層目錄

這三個變數指代的內容是一致的,如果是in source編譯,指得就是工程頂層目錄,如果 是out-of-source編譯,指的是工程編譯發生的目錄

指的是當前處理的cmakelists.txt所在的路徑。

如果是in-source編譯,它跟cmake_current_source_dir一致,如果是out-ofsource 編譯,他指的是target編譯目錄。

輸出呼叫這個變數的cmakelists.txt的完整路徑

控制 debug 和 release 模式的構建

set(cmake_build_type debug)
cmake dcmake_build_type=release
也可以通過指令add_definitions()新增

則可以通過這些變數就行彌補。如果不使用 find_file 和 find_path的話,cmake_include_path,沒有任何作用。

配合 find_library() 使用。否則沒有任何作用

cmake 為上百個軟體包提供了查詢器(finder):find***x.cmake

當使用非cmake自帶的finder時,需要指定finder的路徑,這就是cmake_module_path,配合 find_package()使用

控制make install是檔案會安裝到什麼地方。預設定義是/usr/local 或 %programfiles%

如果不進行設定,使用add_library且沒有指定庫型別,預設編譯生成的庫是靜態庫。

CMake學習筆記

cmake是乙個跨平台的安裝編譯工具,能夠生成各種各樣的makefile或者project檔案。cmake並不直接構建出最終的軟體,而是產生標準的構建檔案 即工程檔案,如unix下的makefile或windows下的c project檔案 然後構建者就可以使用平台的ide環境進行常規構建了。在wi...

CMAKE學習筆記

方法1 cmake中有兩個變數用於指定輸出檔案的位置,通過設定這兩個變數executable output path和library output path的值指定exe檔案和lib檔案放置的目錄,如 set executable output path set library output pat...

Cmake學習筆記

環境 centos7 cmake version 2.8.12.2 常用命令 cmake minimum directoy viersion 2.8 注 version只能大寫 project your project name 這個順序一定要靠前,不然後面會有報錯 aux source direc...