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