2016-09-28 135 views
3

我這樣做是爲第一次,但沒能與CMake的find_package(OpenCV的)找不到加載文件OpenCVModules.cmake

OpenCVModules.cmake是在同一文件夾中OpenCVConfig.cmake但會CMake配置的某些原因因此錯誤而失敗。

我在Windows上使用Visual Studio Express的2010年,CMake的V2.8.0和OpenCV v2.4.9

CMake Error at D:/opencv/mybuild/install/x86/vc10/lib/OpenCVConfig.cmake:49 (include): 
    include could not find load file: 

    /OpenCVModules.cmake 
Call Stack (most recent call first): 
    CMakeLists.txt:19 (FIND_PACKAGE) 

我得到這個與VS 2010速成去,但我不允許隨便選兼容版本的CMake和OpenCV用於這個項目。

我在CMakeLists.txt中執行此操作,「OpenCVConfig.cmake」是OpenCV隨附的默認文件。我沒有修改它。

SET(OpenCV_DIR "D:/opencv/mybuild") 
# this project requires OpenCV, so find it 
FIND_PACKAGE(OpenCV) 
INCLUDE_DIRECTORIES(${OpenCV_INCLUDE_DIRS}) 

線#49從OpenCVConfig.cmake看起來像這樣

include(${CMAKE_CURRENT_LIST_DIR}/OpenCVModules${OpenCV_MODULES_SUFFIX}.cmake) 

在正確的方向任何幫助是極大的讚賞。謝謝。

UPDATE1: 如果我通過硬編碼路徑修改第49行,它的工作原理!

include(D:/opencv/mybuild/OpenCVModules${OpenCV_MODULES_SUFFIX}.cmake) 

由於某些原因$ {CMAKE_CURRENT_LIST_DIR}沒有得到適當的設置。 這看起來像動態更改的變量。爲什麼沒有按預期設定?

+0

你自己寫了OpenCVConfig.cmake嗎?第49行是什麼樣的,什麼是通過包含的變量? –

+0

@RobertPrévost,謝謝。我更新了我的問題以回答您的疑問 – Arun

回答

2

適用於2.8.3之前版本的CMake的版本在OpenCV 2.4.9中不存在。特別是,這意味着CMAKE_CURRENT_LIST_DIR不是生成的OpenCVConfig.cmake中的已定義變量。這會導致OpenCVModules.cmake的路徑形成不正確。至少在OpenCVConfig.cmake中這個違規行中,直到2.4.11(我通過在OpenCV's github上查看./cmake/templates/OpenCVConfig.cmake.in來檢查這個),舊版CMake的兼容性沒有被添加。這就是說,如果你可以選擇使用哪個版本的CMake和OpenCV,那麼我會建議使用最新版本的CMake(> = 2.8.12)和最新版本的OpenCV 2.4(2.4.13.1)或OpenCV 3.1。

+1

您節省了我的一天! CMake 2.8.12和OpenCV 2.4(2.4.13.1)組合就像一個魅力。謝謝! – Arun