2013-04-28 173 views
2

剛構建OpenCV並安裝它。我現在試圖包含它的標題,並遇到麻煩。構建並安裝OpenCV。默認安裝路徑與頭文件所期望的不同

調用cmake不帶任何選項產生具有
CMAKE_INSTALL_PREFIX /usr/local

然而,主要的OpenCV頭,configuratin設有像

[[email protected] build]$ cat /usr/local/include/opencv2/opencv.hpp 
#include "opencv2/core.hpp" 

搜索到的文件位於父目錄線,所以它不能包括:

[[email protected] build]$ ls /usr/local/include | grep core.hpp 
core.hpp 
motion_core.hpp 

安裝出了什麼問題?

使用的軟件:
Fedora18
ccmake版本2.8.10.2
OpenCV的承諾416fb50594003dba822a59fbc77b2d5b4e99f1a5

+0

你有沒有在你的編譯器中檢查過你的代碼是否指向了正確的文件位置?看到這個[鏈接](http://docs.opencv.org/doc/tutorials/introduction/windows_visual_studio_Opencv/windows_visual_studio_Opencv.html),尤其是在最後設置MVS – GPPK 2013-04-28 17:54:19

+0

@GPPK這裏的問題是,OpenCV頭希望其他OpenCV頭文件存在於一個名爲「opencv2」的目錄中 - 他們不這樣做。所以這個問題純粹是OpenCV及其安裝。 – Fraser 2013-04-29 07:01:33

+0

@ Fraser,yup,在stable 2.4中,頭文件位於$ prefix/opencv2/的文件夾中。在unstable * master *中,它們只是在$ prefix中沒有結構而被轉儲。 – Vorac 2013-04-29 07:04:46

回答

1

我寧願讓這個評論,因爲這是比什麼都炒,但它太大而且可能幫助你。所以,它看起來可能不是你所做的,更像是OpenCV cmake代碼中的一個bug。

commit #5170620看起來像「cmake/OpenCVModule.cmake」的變化影響了包含文件的安裝。如果新的正則表達式失敗,${CMAKE_MATCH_1}的值可能爲空,這意味着下面的行會將模塊的頭文件安裝到${OPENCV_INCLUDE_INSTALL_PATH}(默認爲/ usr/local/include)。

我注意到,舊的正則表達式"^(opencv2/.*)/[^/]+.h(..)?$"(opencv2/.*)之後有/,而新的沒有。

我建議改變這個行要麼包括可能丟失/

if(hdr2 MATCHES "^(opencv2/.*)/[^/]+.h(..)?$" AND NOT hdr2 MATCHES "opencv2/${the_module}/private.*") 

或恢復全線回以前的版本:

if(hdr2 MATCHES "^(opencv2/.*)/[^/]+.h(..)?$") 

之後,重新運行CMake再次安裝OpenCV。

+1

我通過克隆origin/2.4修復了我的問題 - 穩定的分支。師父是尚未出生的2.5。不過,我會嘗試你的建議。 – Vorac 2013-04-29 05:58:08

+0

@Vorac如果你嘗試我的答案,這是錯誤的,你能回來這裏,並添加評論/ downvote所以我可以刪除這個請嗎? – Fraser 2013-04-29 07:04:13