CMake 模組的使用和自定義模組

2021-10-12 18:06:41 字數 1509 閱讀 8258

如果程式中使用了外部庫,事先並不知道它的標頭檔案和鏈結庫的位置,就要給出標頭檔案和鏈結庫的查詢方法,並將他們鏈結到程式中。

find_package([major.minor] [quiet] [no_module] 

[[required|components] [componets...]])

1) find_package()的查詢路徑

find_package()命令首先會在模組路徑中尋找 乙個事先編譯好的find.cmake檔案,而且一般官方給出了很多,不需要自己編寫這是查詢庫的乙個典型方式。

具體查詢路徑依次為cmake:

模組模式

配置模式

2) *.cmake檔案定義變數

不管使用哪一種模式,只要找到.cmake,.cmake裡面都會定義下面這些變數:

_found

_include_dirs or _includes

_libraries or _libraries or _libs

_definitions

注意大部分包的這些變數中的包名是全大寫的,如 libfoo_found ,有些包則使用包的實際大小寫,如 libfoo_found

3)新增標頭檔案與鏈結庫檔案

如果找到這個包,則可以通過在工程的頂層目錄中的cmakelists.txt 檔案新增 include_directories(_include_dirs) 來包含庫的標頭檔案,新增target_link_libraries(原始檔 _libraries)命令將原始檔與庫檔案鏈結起來。

4) 鏈結opencv的例子

建立t4目錄新增cmake目錄與main.cpp與cmakelist.txt檔案

建立cmake目錄新增findopencv.cmake檔案。

cmakelist.txt

cmake_minimum_required(version 2.8)

project (hello)

set(src_list main.cpp)

include_directories(cmake)

set(cmake_module_path $/cmake)

#在$中新增包含findopencv.cmake目錄

find_package(opencv)

#獲取opencv_found opencv_include_dir opencv_libraries

include_directories($)

add_executable(hello $)

target_link_libraries(hello $)

main.cpp

#include #include int main()

else

return 0;

}

給出main.c 檔案:

#include int main()

cmake 模組的使用和自定義模組

參考 cmake教程 第9講 目錄樹 沒有編譯,所以build資料夾為空 方法1 使用include directories 新增外部標頭檔案位址 使用target link libraries 鏈結共享庫 include directories usr include add executable...

CMake 模組的使用和自定義模組

如果程式中使用了外部庫,事先並不知道它的標頭檔案和鏈結庫的位置,就要給出標頭檔案和鏈結庫的查詢方法,並將他們鏈結到程式中。find package major.minor quiet no module required components componets.1 find package 的查詢...

python from import 自定義模組

from douban250.items import douban250item python import 自定義模組 1 主程式與模組程式在同一目錄下 如下面程式結構 src mod1.py test1.py 若在程式test1.py中匯入模組mod1,則直接使用 import mod1或fr...