cmake 學習筆記 三

2021-08-02 14:10:29 字數 1393 閱讀 7926

目錄(?)

[+]

接前面的 cmake學習筆記(一) 與 cmake學習筆記(二) 繼續學習 cmake 的使用。

學習一下cmake的 finder。

當編譯乙個需要使用第三方庫的軟體時,我們需要知道:

去哪兒找標頭檔案 .h

對比gcc的 -i 引數

去哪兒找庫檔案 (.so/.dll/.lib/.dylib/...)

對比gcc的 -l 引數

需要鏈結的庫檔案的名字

對比gcc的 -l 引數

這也是乙個 finder 需要返回的最基本的資訊。

比如說,我們需要乙個第三方庫 curl,那麼我們的 cmakelists.txt 需要指定頭檔案目錄,和庫檔案,類似:

include_directiories(/usr/include)

target_link_libraries(myprogram curl)

如果借助於cmake提供的finder會怎麼樣呢?使用cmake的modules目錄下的findcurl.cmake,相應的 cmakelist.txt 檔案:

find_package(curl required)

include_directories($)

target_link_libraries(curltest $)

或者

find_package(curl)

if(curl_found)

include_directories($)

target_link_libraries(curltest $)

else(curl_found)

message(fatal_error "curl not found!")

endif(curl_found)

如果我們使用的finder,不是cmake自帶的怎麼辦?

set(cmake_module_path $ "$/cmake/modules/")
find_package 將會在module路徑下查詢 find.cmake。首先它搜尋 $中的所有路徑,然後搜尋 /share/cmake-x.y/modules/

如果這個檔案未找到,它將會查詢 config.cmake 或 -config.cmake 檔案。這兩個檔案是庫檔案安裝時自己安裝的,將自己的路徑硬編碼到其中。

前者稱為 module 模式,後者稱為 config 模式

每個模組一般都會提供一下幾個變數

設定 _include_dirs 為 _include_dir _include_dirs ...

設定 _libraries 為 _library _libraries ...

呼叫巨集 find_package_handle_standard_args() 設定 _found 並列印或失敗資訊

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...