2013-10-18 82 views
0

我想用Cmake設置Openscenegraph 3.0.1。我閱讀不同的博客文章,但它不起作用。用Cmake在Windows下編譯OpenSceneGraph

我設置了路徑,單擊編譯並選擇VS11(因爲我有VS 2012)並使用本機編譯器。

然後我直接得到這個錯誤:此外,更多的錯誤使用相同的堆棧跟蹤發生

CMake Error at C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules CMakeCInformation.cmake:37 (get_filename_component): 
get_filename_component called with incorrect number of arguments 
Call Stack (most recent call first): 
CMakeLists.txt:3 (PROJECT) 


CMake Error: Internal CMake error, TryCompile configure of cmake failed 
Looking for include file pthread.h - not found 

。如果你願意,也可以將它們粘貼在這裏。

之後,CMake的告訴我:「在配置過程中的錯誤,項目文件可能是無效的」

+0

你可以在你自己的VS'include path中找到'pthread.h'嗎?它可能是它失蹤了嗎? (我不知道也許是因爲Windows喜歡得到越來越少的POSIX) – Shahbaz

+0

在我的電腦上沒有任何東西像pthread.h任何地方。當我打開生成的SLN文件。 VS抱怨說有些項目沒有加載(實際上沒有加載) – Bernhard

+0

恐怕我真的不能幫助你與Windows相關的東西,但我可以建議一個改進。你有沒有考慮過使用跨平臺的工具/庫而不是Windows特有的?如果你使用'gcc','opengl','gtk','SDL'等等,一旦你完成了你的代碼,你可以在不同的操作系統下運行它,這很好。你是否有理由將自己綁定到(正在死亡和遠離標準的)窗口? – Shahbaz

回答

0

你的問題是不是在您使用的編譯器版本;實際上,我在VisualStudio 2012上運行OpenSceneGraph 3(和osgEarth)時沒有任何問題。

它似乎是Cmake/CMakeLists.txt本身的問題。嘗試使用cmake構建一些其他項目,以查看它們是否工作,或嘗試使用接近OpenSceneGraph所需的CMake版本(查看主CMakeLists.txt文件中的CMAKE_MINIMUM_REQUIRED),儘管CMake語言旨在兼容與早期版本,我不知道這是否總是如此。

pthread.h與你的問題無關,在Windows中不存在(除非你使用MinGW來尋找更多的問題),並且OSG不需要 - 我想,你正確配置了OpenThreads不要使用你沒有的庫。無論如何,這只是CMake在每個構建中所做的工作的一部分 - 尋找一些隨機的東西,比如是否可以找到pthreads.h,這讓CMake對您的環境有所瞭解,並且通常不會涉及到您構建的項目與cmake。因此,只是忽略pthread.h

0

一般情況下,CMake不應該爲Windows尋找pthread。以下是CMake(2.8)FindThreads.cmake中的幾行代碼,用於搜索合適的模塊。

...  
    CHECK_INCLUDE_FILES("pthread.h" CMAKE_HAVE_PTHREAD_H) 
    if(CMAKE_HAVE_PTHREAD_H) 
     ... 
    endif() 
    ... 

    if(CMAKE_SYSTEM MATCHES "Windows") 
    set(CMAKE_USE_WIN32_THREADS_INIT 1) 
    set(Threads_FOUND TRUE) 
    endif() 

正如你所看到的,第一次檢查應該失敗而推出的,直到第二次檢查。不過,我相信在你的情況下,CMake不知何故發現pthread.h(也許你也有MinGW)這似乎是你係統中的一個簡單衝突。檢查你的系統的PATH等,並嘗試修復它。