2010-11-15 54 views
5

我無法找到這個可能簡單的問題的答案。我一直有越來越OpenCV的問題與任何開發的C++或VS 2010OpenCV VS 2010 C++ CMake

我的問題是不是細節,而是是關於什麼的CMake有助於過程在我的電腦上工作。

我已經做我的方式,通過大量的C++程序,學習語言。但是,我寫他們,並編寫他們,沒有大驚小怪,直接在Dev C++使用標準包括,等等。

現在我來試圖使用我的第一個第三方庫集,有這個巨大的過程使用CMake下載可執行文件,然後使用其中一個IDE進行編譯。對我來說,難怪事情出錯了。步驟太多,目的是什麼?

好了,我的幼稚和有關編程簡單。因此,這裏是我的問題:

爲什麼有一個可執行的,如果你需要做的三個步驟之後?我有點理解作家是否不知道每個人都在使用什麼編譯器;但爲什麼不僅僅是一組簡單的源代碼,而是用它來完成呢?

但是,如果VS 2010有一個特定的文件,爲什麼不直接將它設置爲它在計算機上的工作方式呢?就像所有人以相同的格式下載VS 2010一樣,然後它安裝自己?

最後,即使需要某種形式的安裝程序創建的目錄結構(這我還沒有因爲郵編,焦油理解等做工精細),爲什麼會出現需要CMake的呢?

我不介意被人嘲笑爲是愚蠢和缺少一些明顯的點,但我將不勝感激不必通過快速反駁涉水:它可能看起來簡單,但你們都從外面,它不很有意義。在此先感謝,約翰


謝謝。我想我對這個過程的細節不夠了解,不知道爲什麼這是必要的。或者說,我理解:有不同的操作系統和不同的編譯器,但即使每種編碼都不同,CMake也會理解它所列出的編譯器,因此開發人員只需要弄清楚如何編寫CMake。如果CMake不瞭解環境或編譯器,那麼庫作者或開發人員必須弄清楚如何將其移植到特定環境。不過,我仍然不明白爲什麼對於VS 2010來說,因爲OpenCV已經有了一個特定的編譯器,所以CMake是必需的。不過,我現在只是暫時擱置,然後繼續前進。

再次感謝。


我想我需要添加評論。針對這個問題「這真的是一個問題嗎?」我認爲答案必須是肯定的。將近一個星期我已經浪費了好一會的OpenCV與2010年

沒有人VS工作,從Microsoft網站的獨立博客已經能夠幫助我。我已經通過了sxstrace等,並嘗試了任何人都建議。最後它是同樣的問題。

所以是的,這確實是一個問題。我現在不想學習Windows編程。我也不想在這個時候學習CMake錯綜複雜的東西。爲Windows安裝的.exe程序一直適用於我。我確信有例外,但個人並不存在。所以如果OpenCV推出一個特別的2008年。exe版本,爲什麼不能讓它一直工作。


順便說一句,這裏是sxstrace文本文件的輸出:

Inizio generazione contesto迪attivazione。 Parametro二輸入: 標誌= 0 ProcessorArchitecture用於= 86 CultureFallBacks =它-IT;它 ManifestPath = C:\ Windows \ System32下\ cxcore210d.dll AssemblyDirectory = C:\ Windows \ System32下\ 應用程序配置文件=

INFORMAZIONI:corso中的分析文件聲明C:\ Windows \ system32 \ cxcore210d.dll。 INFORMAZIONI:l'identitàdi definizione del manifestoè(null)。 Microsoft.VC90.DebugCRT,processorArchitecture = Microsoft.VC90.DebugCRT,processorArchitecture =「x86」,publicKeyToken =「1fc8b3b9a1e18e3b」,type =「win32」,version =「9.0.21022.8」 INFORMAZIONI:risoluzione del riferimento Microsoft.VC90.DebugCRT,processorArchitecture = 「x86」,publicKeyToken =「1fc8b3b9a1e18e3b」,type =「win32」,version =「9.0.21022.8」in corso。 INFORMAZIONI:risoluzione del riferimento per Processor Architecture x86 in corso。 INFORMAZIONI:risoluzione del riferimento per la lingua中立於corso。 INFORMAZIONI:應用於corso的二級結合。 INFORMAZIONI:Criteri di autore non trovati。 INFORMAZIONI:重新結合非特洛伊託的標準。 INFORMAZIONI:inizio dell'esecuzione del probe dell'assembly。 INFORMAZIONI:在WinSxS中裝配非特洛伊託。在C:\ Windows \程序集\ GAC_32 \ Microsoft.VC90.DebugCRT \ 9.0.21022.8__1fc8b3b9a1e18e3b \ Microsoft.VC90.DebugCRT.DLL中的INFANTEMZIONI:tentativo di esecuzione del probe del宣言。 INFORMAZIONI:tentativo di esecuzione del probe del在C:\ Windows \ system32 \ Microsoft.VC90.DebugCRT.DLL中的聲明。在C:\ Windows \ system32 \ Microsoft.VC90.DebugCRT.MANIFEST中的INFORMAZIONI:tentativo di esecuzione del probe del宣言。 INFORMAZIONI:tentativo di esecuzione del probe del宣言在C:\ Windows \ system32 \ Microsoft.VC90.DebugCRT \ Microsoft.VC90.DebugCRT.DLL。在C:\ Windows \ system32 \ Microsoft.VC90.DebugCRT \ Microsoft.VC90.DebugCRT.MANIFEST中的INFORMAZIONI:tentativo di esecuzione del probe del宣言。 INFORMAZIONI:宣言無法成爲中立。 INFORMAZIONI:fine dell'esecuzione del probe dell'assembly。 INFORMAZIONI:impossibile risolvere il riferimento Microsoft.VC90.DebugCRT,processorArchitecture =「x86」,publicKeyToken =「1fc8b3b9a1e18e3b」,type =「win32」,version =「9.0.21022.8」。 ERRORE:generazione del contesto di attivazione non riuscita。 Fine generazione contesto di attivazione。

這裏是調試輸出。

'你好週六Night.exe':已加載 'C:\用戶\傑克\文檔\ Visual Studio 2010的\項目\你好週六夜\調試\你好週六Night.exe',加載符號。 'Hello Saturday Night.exe':加載'C:\ Windows \ System32 \ ntdll.dll',加載符號(去除源信息)。 'Hello Saturday Night.exe':加載'C:\ Windows \ System32 \ kernel32.dll',加載符號(去除源信息)。 'Hello Saturday Night.exe':Loaded'C:\ Windows \ System32 \ cxcore210d。DLL」,無法找到或打開PDB文件 調試::未處理的非可持續例外是處理量 線程時拋出‘的Win32線程’(0x1140)已退出,代碼爲-1072365566(0xc0150002)。 線程'Win32 Thread'(0xf1c)已退出,代碼爲-1072365566(0xc0150002)。 程序'[3688] Hello Saturday Night.exe:Native'已退出,代碼爲-1072365566(0xc0150002)。

回答

5

我想你可能誤會CMake的受益誰最。這是圖書館的作者,有很好的理由。在編寫跨平臺庫時,需要爲不同的操作系統和編譯器提供構建環境。有很多組合。爲大型圖書館項目維護這些生成文件和項目/解決方案是一項勞動密集型任務,特別是在添加或刪除新文件的情況下。

CMake的需要痛苦出於此。它以獨立於編譯器的方式生成,允許源代碼的作者維護單個構建環境。現在該項目可以輕鬆跨平臺和編譯器進行分佈。

所以,是的,它是使用庫開發一個額外的步驟,但你只有一次,每釋放構建它,是不是真的那麼多的問題呢?

+1

+1 - CMake的有利於應用開發者爲好,捎帶(如果他們沒有刻意去建立你的特定平臺的二進制文件?)。這似乎是一種痛苦(我過去曾經以與OP完全相同的方式抱怨它),直到可移植性成爲您的主要考慮因素。然後你突然意識到爲什麼它有用:) – 2010-11-15 21:01:09

+0

@sgolodetz,好點。我已經修改了一些文字。 – 2010-11-15 21:03:47

0

除了一切武果汁說,如果你想爲VS一個簡單的計算機視覺解決方案,我會強烈建議EmguCV。它是在C#封裝中的OpenCV。沒有文件和整體更容易處理,特別是如果你是一個新手。