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