2012-05-12 66 views
3

我使用cmake貴試圖建立OpenCV的,但得到這個錯誤時:CMake的錯誤配置的OpenCV

CMake Error at cmake/OpenCVGenConfig.cmake:134 (math): 
    math cannot parse the expression: "8 * ": syntax error, unexpected $end, 
    expecting exp_OPENPARENT or exp_NUMBER (4) 
Call Stack (most recent call first): 
    CMakeLists.txt:649 (include) 

這是我與CMake的第一次的經驗,所以我不知道要找誰。我查看了OpenCVGenConfig.cmake文件,但我對它的語法毫無頭緒。我吹走了一切,再次下載了opencv tarball,但仍然得到相同的錯誤。所以它看起來不是OpenCVGenConfig.cmake文件中的打字錯誤,而是處理「數學」命令。我似乎無法在Cmake文檔中找到與「數學」命令相關的任何內容。

任何想法?

-Andres

+0

運行

cmake --help-command math 

CMAKE_SIZEOF_VOID_P坐上math命令信息?確保您正在運行最新版本(當前爲2.8)來構建當前版本的OpenCV。儘管文檔說早期版本可以,但有些錯誤可能會在<2.8的時候出現。 – gavinb

回答

9

看起來有問題的線路

math(EXPR SIZEOF_VOID_P_BITS "8 * ${CMAKE_SIZEOF_VOID_P}") 

這個問題似乎是${CMAKE_SIZEOF_VOID_P}沒有設置時應該 表明字節的指針的大小。在調用頂層CMakeLists.txt開頭附近的project命令期間,它應該被設置。

我不確定它爲什麼沒有設置,它甚至可能是CMake中的一個錯誤。如果您尚未使用latest version of CMake(目前2.8.8),則可以嘗試使用。另外,從命令行運行CMake可能會有所作爲(它不應該,但你永遠不會知道)。

如果這沒有幫助,最好的辦法是諮詢CMake mailing list

作爲一個絕對的最後一招,你可以通過添加

if(NOT CMAKE_SIZEOF_VOID_P) 
    set(CMAKE_SIZEOF_VOID_P 4) # replace 4 with 8 for 64-bit machine 
    endif() 

向CMake/OpenCVGenConfig.cmake之前線134,其中math調用時設置CMAKE_SIZEOF_VOID_P你的機器上適當的值。這是一個可怕的黑客,我當然不推薦它,但它可能讓你建立OpenCV,而 尋求在郵件列表上的正確答案。


您可以通過您使用CMake的哪個版本的運行

cmake --help-variable CMAKE_SIZEOF_VOID_P 
+0

感謝您的回覆和建議。我會給他們所有人一個嘗試。 –

+1

非常好的答案! – LiMuBei