tengo este código simple:banderas cmake para OpenGL usando Glew y GLFW
#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;
}
y en mi CMakeLists.txt:
PROJECT(test C)
find_package(OpenGL)
ADD_DEFINITIONS(
-std=c99
-lGL
-lGLU
-lGLEW
-lglfw
)
SET(SRC test)
ADD_EXECUTABLE(test ${SRC})
corriendo "cmake". no se produce ningún error, pero con make voluntad dice:
test.c:(.text+0x10): undefined reference to `glfwInit'
collect2: ld returned 1 exit status
make[2]: *** [tut1] Error 1
mientras se ejecuta:
gcc -o test test.c -std=c99 -lGL -lGLU -lGLEW -lglfw
compila correctamente el código sin error. ¿Cómo hago que cmake se ejecute con mi código?
también, si puedo añadir estas líneas a la función principal:
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);
incluso corriendo gcc con las mismas banderas producirá 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)
estoy corriendo menta Linux basada en Kubuntu 10.04, cmake v2.8, libglfw-dev, libglfw2, libglew1.5, libglew1.5-dev, glew-utils.
Soy nuevo en cmake, glew y glfw. ¡Gracias por su ayuda chicos!
¡salud!
P
gracias por la explicación. le dará una oportunidad – pixelblender