I have this simple code:
#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; }
and in my CmakeLists.txt:
PROJECT(test C) find_package(OpenGL) ADD_DEFINITIONS( -std=c99 -lGL -lGLU -lGLEW -lglfw ) SET(SRC test) ADD_EXECUTABLE(test ${SRC})
"cmake" works. does not cause errors, but make will work:
test.c:(.text+0x10): undefined reference to `glfwInit' collect2: ld returned 1 exit status make[2]: *** [tut1] Error 1
during operation:
gcc -o test test.c -std=c99 -lGL -lGLU -lGLEW -lglfw
successfully compiles code without errors. How to make cmake make code with my code?
also if I add these lines to the main function:
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 );
even running gcc with the same flags will result in an error:
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)
I am running linux mint based on kubuntu 10.04, cmake v2.8, libglfw-dev, libglfw2, libglew1.5, libglew1.5-dev, glew-utils.
I am new to cmake, glew and glfw. Thanks for the help guys!
Hurrah!
R