2016-03-18 65 views
0

我想學習使用着色器,因此在Netbeans(8.0.2版)上創建了一個新的C++項目。在Netbeans中使用gcc

我想包括GLFW和GLEW庫就像在本教程中指出:http://www.learnopengl.com/#!Getting-started/Creating-a-window

我想我包括圖書館的成功。 (當使用#include <GL\glew.h>#include <GLFW\glfw3.h>時,Netbeans顯示沒有錯誤,所以我認爲它找到所有文件)。

我的操作系統:Windows 10 64,使用GNU gcc編譯器通過Cygwin

現在,這裏的問題是: 當我嘗試運行的程序,有以下輸出:

"/usr/bin/make" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf 
make[1]: Entering directory '/cygdrive/c/Users/Erik/programming/projects/FinallyShaders' 
"/usr/bin/make" -f nbproject/Makefile-Debug.mk dist/Debug/Cygwin-Windows/finallyshaders.exe 
make[2]: Entering directory '/cygdrive/c/Users/Erik/programming/projects/FinallyShaders' 
mkdir -p build/Debug/Cygwin-Windows 
rm -f "build/Debug/Cygwin-Windows/main.o.d" 
gcc -c -g -include /cygdrive/C/Users/Erik/programming/Libraries/glew-1.13.0-win32/glew-1.13.0/include/GL -include /cygdrive/C/Users/Erik/programming/Libraries/glfw-3.1.2.bin.WIN32/glfw-3.1.2.bin.WIN32/include/GLFW -MMD -MP -MF "build/Debug/Cygwin-Windows/main.o.d" -o build/Debug/Cygwin-Windows/main.o main.c 
cc1: fatal error: /cygdrive/C/Users/Erik/programming/Libraries/glew-1.13.0-win32/glew-1.13.0/include/GL: No such file or directory 
compilation terminated. 
nbproject/Makefile-Debug.mk:66: recipe for target 'build/Debug/Cygwin-Windows/main.o' failed 
make[2]: *** [build/Debug/Cygwin-Windows/main.o] Error 1 
make[2]: Leaving directory '/cygdrive/c/Users/Erik/programming/projects/FinallyShaders' 
nbproject/Makefile-Debug.mk:59: recipe for target '.build-conf' failed 
make[1]: *** [.build-conf] Error 2 
make[1]: Leaving directory '/cygdrive/c/Users/Erik/programming/projects/FinallyShaders' 
nbproject/Makefile-impl.mk:39: recipe for target '.build-impl' failed 
make: *** [.build-impl] Error 2 

BUILD FAILED (exit value 2, total time: 722ms) 

它似乎失敗了,因爲gcc編譯器(或更確切地說它的cc1部分)找不到該庫的include-directory。但是,如前所述,路徑是正確的。當使用cd <the path that cannot be found>時,一切正常,cygwin找到了這條路徑。

(我的程序做什麼,但呼籲printf()到現在爲止,這不應該成爲問題)

有誰知道這代表着什麼,以及如何解決這個問題?

感謝您的幫助

埃裏克·布倫德爾

回答

3

你沒有編譯器命令行是:

gcc -c -g \ 
-include /cygdrive/C/Users/Erik/programming/Libraries/glew-1.13.0-win32/glew-1.13.0/include/GL \ 
-include /cygdrive/C/Users/Erik/programming/Libraries/glfw-3.1.2.bin.WIN32/glfw-3.1.2.bin.WIN32/include/GLFW \ 
-MMD -MP -MF "build/Debug/Cygwin-Windows/main.o.d" \ 
-o build/Debug/Cygwin-Windows/main.o main.c 

要修復報告的錯誤:

cc1: fatal error: /cygdrive/C/Users/Erik/programming/Libraries/glew-1.13.0-win32/glew-1.13.0/include/GL: No such file or directory 

它應該是:

gcc -c -g \ 
-I/cygdrive/C/Users/Erik/programming/Libraries/glew-1.13.0-win32/glew-1.13.0/include/GL \ 
-I/cygdrive/C/Users/Erik/programming/Libraries/glfw-3.1.2.bin.WIN32/glfw-3.1.2.bin.WIN32/include/GLFW \ 
-MMD -MP -MF "build/Debug/Cygwin-Windows/main.o.d" \ 
-o build/Debug/Cygwin-Windows/main.o main.c 

您已經混淆編譯器選項-include-I。見the documentation of these options 這裏是一個pretty good introductory tutorial to the use of GCC

在NetBeans項目屬性後,包括搜索,目錄應 在構建進入 - >C編譯器 - >包含目錄,不包括報頭的

+0

謝謝,那實際上刪除了那個錯誤。 Netbeans不知道如何使用gcc(我沒寫過這個命令行,它是由Netbeans自動生成的) 有沒有辦法在Netbeans設置中編輯它?我不想每次都手動補充... 而且很遺憾,出現下一個錯誤:在main.c中,我使用'#include '。這行現在拋出錯誤,glew.h不存在(沒有這樣的文件或目錄:GL/glew.h),即使文件_is_在那裏。 ('ls -al '顯示文件glew.h) –

+0

@ErikBrendel查看更新後的答案。 –

+0

噢好吧,這是有道理的。我只是沒有看到這個選項 –

0

您是否正在爲Netbeans配置proyect鏈接器?這意味着告訴IDE您將使用默認情況下不添加的庫,只需使用include命令,例如math.h庫(記住您必須通過命令promp使用-lm進行編譯,這是同樣的事情)。

這可以通過運行項目配置自定義鏈接程序庫(點擊按鈕說...)來完成。 enter image description here

然後,您單擊添加pkgconfig庫或標準(對於像unix系統中的math.h或pthread),然後搜索您希望添加的庫。 enter image description here

+0

我認爲所需的圖書館在那裏。它看起來像[this](http://imgur.com/lgVMZsL) –