簡體   English   中英

使用CMAKE查找到開發庫的軟件包

[英]find-package to a development library using CMAKE

我敢肯定,這是一個總的問題。

我正在研究OpenCV項目,並希望使用最新的beta版本進行測試。 如何在不將Beta庫安裝到系統中的情況下指定它們? 我的beta opencv已成功內置:

/Users/paul/hacking/robotics/opencv/build/lib/

我當前的cmake基本上已經從opencv示例中刪除,看起來像這樣:

    # cmake for Stereo Vision App
# your opencv/build directory should be in your system PATH

# set minimum required version for cmake
cmake_minimum_required(VERSION 2.8)

# define the project name
set(project_name "Stereo")

# set the project namee
project("${project_name}")

# add opencv package to the project
find_package( OpenCV REQUIRED )
MESSAGE("OpenCV version : ${OpenCV_VERSION}")

# add opencv include directories to the project
include_directories( ${OpenCV_INCLUDE_DIRS} ) 
# add include directory
include_directories (${Stereo_SOURCE_DIR}) 

# add library
add_library( CameraCalibrator CameraCalibrator.cpp)

# add executable
#add_executable( videoprocessing videoprocessing.cpp)
#add_executable( tracking tracking.cpp)
#add_executable( foreground foreground.cpp)
add_executable( calibrate calibrate.cpp)
add_executable( rightsideup rightsideup.cpp)
add_executable( live live.cpp)
add_executable( live2 live2.cpp)
add_executable( stereo-tune stereo-tune.cpp)
add_executable( project project.cpp)
add_executable( stereo_calibrate stereo_calibrate.cpp)
add_executable( capture_two_camera_chessboards capture_two_camera_chessboards.cpp)
add_executable( capture_stereo_chessboards capture_stereo_chessboards.cpp)

# link libraries
#target_link_libraries( videoprocessing ${OpenCV_LIBS})
#target_link_libraries( tracking ${OpenCV_LIBS})
#target_link_libraries( foreground ${OpenCV_LIBS})
target_link_libraries( rightsideup ${OpenCV_LIBS})
target_link_libraries( live ${OpenCV_LIBS})
target_link_libraries( live2 ${OpenCV_LIBS})
target_link_libraries( stereo-tune ${OpenCV_LIBS})
target_link_libraries( project ${OpenCV_LIBS})
target_link_libraries( stereo_calibrate ${OpenCV_LIBS})
target_link_libraries( capture_two_camera_chessboards ${OpenCV_LIBS})
target_link_libraries( capture_stereo_chessboards ${OpenCV_LIBS})
target_link_libraries( calibrate ${OpenCV_LIBS} CameraCalibrator)

我嘗試使用link_libraries並將find軟件包行上的版本設置為3.0,但是它始終會找到系統安裝的庫2.4.10

編輯1:

cmake -DPCL_DIR:PATH="../../pcl/build" -DOpenCV_DIR:PATH="../../opencv/build" ..

由於某種原因對我不起作用。 同樣,當我嘗試在CMake腳本中設置這些變量時,它也不起作用。

set(PCL_DIR "../../pcl/build" CACHE PATH "")
set(OpenCV_DIR "../../opencv/build" CACHE PATH "")

非常感謝! 保羅

您朝着正確的方向前進。 除非另有說明,否則cmake的Find腳本會首先在標准系統路徑中查找。 每個FIND腳本都有其自己的cmake變量集,您可以將其設置為更改行為。

對於FindOpenCV.cmake,它似乎是OPENCV_BASE_DIR。

這是一些源代碼的鏈接:

https://github.com/rpavlik/cmake-modules/blob/master/FindOpenCV.cmake

編輯:

我不完全了解,但以下內容似乎適用於絕對路徑

set(OpenCV_DIR "/Users/paul/hacking/robotics/opencv/build" CACHE PATH "")
set(PCL_DIR "/Users/paul/hacking/robotics/pcl/build" CACHE PATH "")
set(VTK_DIR "/Users/paul/hacking/robotics/VTK/build" CACHE PATH "")

如果我弄錯了命令行,至少可以減少錯誤,我不再需要記住執行以下操作:

 OpenCV_DIR=../../opencv/build cmake ..

在PCL文檔中,它說要使用:

set(PCL_DIR "/path/to/PCLConfig.cmake")

但這對我不起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM