此文為:輕鬆入門cmake系列教程引入庫檔案時,我們必須知道標頭檔案的路徑還有庫檔案的路徑
在cmake某個程式的時候,經常會提示找不到某個所依賴的庫,那麼這是時候我們就需要檢查我們引入依賴庫的路徑對不對了, cmake中乙個自動尋找函式find_package()可以幫我們實現這個功能。
cmakefilelists.txt
find_package
( opencv required )
if(opencv_found)
include_directories
( $)
target_link_libraries
( $ $
)endif (opencv_found)
下面需要說明的是,find_package(opencv required)
執行成功後,它的標頭檔案路徑,庫檔案路徑都會被賦值。
opencv_include_dirs 是標頭檔案路徑
opencv_libs 是庫檔案位址
有了標頭檔案和庫檔案,自然而然可以正常引用 opencv 了。
我們可以列印輸出這兩個變數:
message
("!!!!!!!!opencv_include_dirs:" $
)message
("!!!!!!!!opencv_libraries:" $
)
比如,cmake 可以很輕鬆引入 bzip2
find_package (bzip2)
if(bzip2_found)
include_directories($)
target_link_libraries (test $
)endif (bzip2_found)
bzip2 定義了一系列變數,含義如下
bzip2_found - system has bzip2
bzip2_include_dir - the bzip2 include directory
bzip2_libraries - link these to use bzip2
bzip2_need_prefix -
this is set if the functions are prefixed with bz2_
bzip2_version_string
總結:
現在用 *** 代表要查詢的 package 名字
find_pacakge(*** required)
會設定一系列變數。
***_found 代表庫是否查詢成功
***_include_dirs 代表標頭檔案的路徑
***_libraries 代表庫檔案的路徑
乙個庫可能由好多個元件構成,cmake 可以單獨引入這些元件
find_package
(qt5 5.1
.0 components widgets xml sql)
引入了 qt5 中的 widgets xml sql 元件。
實際上,通過 find_package() 可以順利查詢任何符合 cmake package 標準的外部工程。
find_pacage()方法簽名如下:
find_package
([version]
[exact]
[quiet]
[module]
[required]
[[components]
[components...
]][optional_components components...
][no_policy_scope]
)
首先,cmake本身不提供任何搜尋庫的便捷方法,所有搜尋庫並給變數賦值的操作必須由cmake**完成,比如find***.cmake和***config.cmake。只不過,庫的作者通常會提供這兩個檔案,以方便使用者呼叫。
find_package採用兩種模式搜尋庫:
set
(lapack_dir /usr/local/lib/
)set
(lapack_include_dirs /usr/local/include)
set(lapack_libraries /usr/local/lib)
cmake findpackage 版本問題
專治cmake中findpackage的各種找不到問題,各種版本不對問題 以重症患者protbuf為例。首先明確一點,findpackage的作用就是找到相關目錄位址,並指定給相關變數。自動的找不著,我們手工指定就完了。protobuf found found the google protocol...
Xcode 新增依賴工程
今天玩cocos2d x,發現建立出來的工程的lib都只是.a檔案。想跟進去看看原始碼都不能如願。所以就決定把.a檔案替換掉 所以第一步 把cocos2d x 3.9拷貝到工程目錄下 第二步 把.xcodeproj add進來 第三步 在build phases target dependencie...
XCode IOS 新增module 依賴
1.將需要新增的module的拖到你的porject目錄下,被新增的module的字尾名為xcodeproj 2.選擇你的專案 httprequestdemo 在右側選擇taregets目錄下的同名檔案,然後在旁邊的視窗中找到general embedded binaries,因為我已經新增過了,所...