cmake findpackage 版本問題

2021-10-04 00:28:03 字數 1670 閱讀 9099

專治cmake中findpackage的各種找不到問題,各種版本不對問題

以重症患者protbuf為例。

首先明確一點,findpackage的作用就是找到相關目錄位址,並指定給相關變數。自動的找不著,我們手工指定就完了。

``protobuf_found``

found the google protocol buffers library

(libprotobuf & header files)

``protobuf_version``

version of package found.

``protobuf_include_dirs``

include directories for google protocol buffers

``protobuf_libraries``

the protobuf libraries

``protobuf_protoc_libraries``

the protoc libraries

``protobuf_lite_libraries``

the protobuf-lite libraries

message(warning "protobuf info:" "$ $ $ $ $ $")
protobuf info:true 3.8.0 /usr/local/include

/usr/local/lib/libprotobuf.so;-lpthread

/usr/local/lib/libprotoc.so;-lpthread

/usr/local/lib/libprotobuf-lite.so;-lpthread

step 5

在目標工程中的cmake/modules/目錄下新建乙個findprotobuf.cmake檔案(cmake會優先在這個目錄找,截胡),直接把相關資訊和目錄指定給相關變數(直接粗暴):

set(protobuf_found "true")

set(protobuf_version "2.6.1")

set(protobuf_include_dirs "***/include")

set(protobuf_libraries "***/lib/libprotobuf.so;-lpthread")

set(protobuf_protoc_libraries "***/lib/libprotoc.so;-lpthread")

set(protobuf_lite_libraries "***/lib/libprotobuf-lite.so;-lpthread")

findpackage可以通過package_dir, package_root, hints等指定搜尋路徑,如果可以通過這些方式解決就不用像上面那麼麻煩了,如opencv一般就可以:

set(opencv_dir "/path/to/your/opencv/build")  #opencvconfig.cmake所在的目錄

find_package(opencv_dir required)

find_package(opencv_dir required hints "/path/to/opencv)

cmake find package 新增依賴庫

此文為 輕鬆入門cmake系列教程 引入庫檔案時,我們必須知道標頭檔案的路徑還有庫檔案的路徑 在cmake某個程式的時候,經常會提示找不到某個所依賴的庫,那麼這是時候我們就需要檢查我們引入依賴庫的路徑對不對了,cmake中乙個自動尋找函式find package 可以幫我們實現這個功能。cmakef...

signalR selfhost 版本相容問題

一 異常簡要說明最近在學習signalr,i按照 這個教程上安裝包時出現如下錯誤。二 分析原因在網上問了幾個人以後也沒解決,後來自己分析出原因,signalr.self.host和owin.cors都依賴於microsoft.owin這個包,而我們直接用命令安裝時會預設安裝最新版本,這樣乙個依賴的是...

oracle之wm concat不同版本問題

wm concat col group by 把所有 行的col用,號拼接到一行 環境 oracle database 11g enterprise edition release 11.2.0.4.0 64bit production 這個版本在不同的oracle版本下會有差異,如 上述語句在or...