使用gcc与Netbeans

时间:2016-03-18 12:30:23

标签: c++ netbeans g++ cygwin

我想学习使用着色器,因此在Netbeans上创建了一个新的C ++项目(版本8.0.2)。

我希望包含本教程中所述的GLFW和GLEW库:http://www.learnopengl.com/#!Getting-started/Creating-a-window

我认为我成功地包含了图书馆。 (Netbeans在使用#include <GL\glew.h>#include <GLFW\glfw3.h>时没有显示任何错误,因此我认为它会找到所有文件。

我的系统:Windows 10 x64,通过cygwin使用GNU gcc编译器

现在问题是: 当我尝试运行程序时,有以下输出:

"/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()之外什么都不做,这应该不是问题)

有谁知道这可能意味着什么以及如何解决这个问题?

感谢您的帮助

Erik Brendel

2 个答案:

答案 0 :(得分: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项目属性中,include搜索目录应该是 输入构建 - &gt; C编译器 - &gt; 包含目录,而非包含标题

答案 1 :(得分:0)

您是否正在为Netbeans配置proyect链接器?这意味着告诉IDE你将使用默认情况下没有添加的库只包含include命令,例如math.h库(记住你必须通过命令提示用-lm编译,它是同样的事情)。

这可以通过运行proyect configuration-customize-Linker-Libraries(你点击按钮说明......)来完成。 enter image description here

然后单击添加pkgconfig库或标准(对于math.h或unix系统中的pthread),并搜索要添加的库。 enter image description here