我有这段简单的代码:
#include <stdio.h>
#include <stdlib.h>
#include <GL/glew.h>
#include <GL/glfw.h>
int main(int argc, char const* argv[] )
{
if( !glfwInit() ){
fprintf( stderr, "failed\n" );
}
return 0;
}
而在我的CmakeLists.txt文件中:
PROJECT(test C)
find_package(OpenGL)
ADD_DEFINITIONS(
-std=c99
-lGL
-lGLU
-lGLEW
-lglfw
)
SET(SRC test)
ADD_EXECUTABLE(test ${SRC})
运行 "cmake ." 没有产生任何错误,但运行 make 会报错:
test.c:(.text+0x10): undefined reference to `glfwInit'
collect2: ld returned 1 exit status
make[2]: *** [tut1] Error 1
运行时:
gcc -o test test.c -std=c99 -lGL -lGLU -lGLEW -lglfw
成功编译代码且无错误。我该如何让 CMake 运行我的代码?
此外,如果我将以下这些行添加到主函数:
glfwOpenWindowHint( GLFW_FSAA_SAMPLES, 4 );
glfwOpenWindowHint( GLFW_OPENGL_VERSION_MAJOR, 3 );
glfwOpenWindowHint( GLFW_OPENGL_VERSION_MINOR, 1 );
glfwOpenWindowHint( GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE );
即使使用相同的标志运行gcc也会产生错误:
test.c: In function ‘main’:
test.c:14: error: ‘GLFW_OPENGL_VERSION_MAJOR’ undeclared (first use in this function)
test.c:14: error: (Each undeclared identifier is reported only once
test.c:14: error: for each function it appears in.)
test.c:15: error: ‘GLFW_OPENGL_VERSION_MINOR’ undeclared (first use in this function)
test.c:16: error: ‘GLFW_OPENGL_PROFILE’ undeclared (first use in this function)
test.c:16: error: ‘GLFW_OPENGL_CORE_PROFILE’ undeclared (first use in this function)
我正在运行基于Kubuntu 10.04的Linux Mint,使用CMake v2.8、libglfw-dev、libglfw2、libglew1.5、libglew1.5-dev和glew-utils。
我对CMake、GLEW和GLFW还不熟悉。感谢你们的帮助!
祝好!