cmake flags für opengl mit glew und glfw
Ich habe diesen einfachen 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;
}
und in meinem CmakeLists.txt:
PROJECT(test C)
find_package(OpenGL)
ADD_DEFINITIONS(
-std=c99
-lGL
-lGLU
-lGLEW
-lglfw
)
SET(SRC test)
ADD_EXECUTABLE(test ${SRC})
läuft "cmake ." produziert keine Fehlermeldung, aber laufen machen wird, sagt:
test.c:(.text+0x10): undefined reference to `glfwInit'
collect2: ld returned 1 exit status
make[2]: *** [tut1] Error 1
beim laufen:
gcc -o test test.c -std=c99 -lGL -lGLU -lGLEW -lglfw
erfolgreich kompiliert der code ohne Fehler. Wie mache ich cmake-Lauf mit meinem code?
auch, wenn ich das hinzufügen dieser Zeilen in der main-Funktion:
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 );
selbst ausführen von gcc mit den gleichen flags erzeugen Fehler:
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)
ich bin mit linux mint basiert auf kubuntu 10.04, cmake v2.8, libglfw-dev, libglfw2, libglew1.5, libglew1.5-dev, glew-utils.
Ich bin neu in cmake, glew und glfw. Danke für Eure Hilfe Jungs!
prost!
P
InformationsquelleAutor pixelblender | 2011-07-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
sehen Sie hier ein Beispiel, wie ich cmake mit glfw.
http://code.google.com/p/assembly3d/source/browse/tools/viewer/CMakeLists.txt
Benutze ich FindGLFW.cmake für das finden von glfw
http://code.google.com/p/assembly3d/source/browse/tools/viewer/cmake_modules/FindGLFW.cmake
Auch, glfw version in ubuntu ist 2,6.
GLFW_OPENGL_VERSION_MINOR und GLFW_OPENGL_VERSION_MAJOR funktioniert einfach in glfw 2,7 und ich denke, OpenGL 3.x arbeitet nur mit glfw 2.7.
Besten
InformationsquelleAutor ptrv
Um die Befehle zu sehen, dass die CMake generierten makefile ausgeführt wird, führen Sie make so:
Sehen die Befehle ist sehr hilfreich beim Debuggen CMake-Projekte. Für das Beispiel werden die folgenden Befehle ausgeführt werden:
Den makefiles generiert CMake kompilieren wird jede Quelldatei in eine Objektdatei (dies ist, was gcc -c tut) individuell, und verknüpfen Sie dann alle object-Dateien zusammen mit einem separaten Befehl. Mit den mitgelieferten Beispiel -, die OpenGL-Bibliotheken festgelegt werden, die während der Kompilierung der Bühne, und nicht während der link-Phase. Anstatt der Angabe der Bibliotheken mit add_definitions, die target_link_libraries Befehl sollte verwendet werden.
A CMakeLists.txt Datei wie sollte dies funktionieren:
Den -l Präfix nicht angegeben werden müssen für die Bibliotheken, weil target_link_libraries wird automatisch fügen Sie die -l Präfix für UNIX/Linux-Umgebungen und die .lib - Erweiterung für Windows-Umgebungen. Mehr Informationen über target_link_libraries finden Sie unter http://www.cmake.org/cmake/help/cmake-2-8-docs.html#command:target_link_libraries
InformationsquelleAutor dgraves
Pixar hat hat es noch nicht. Die unten ist der Quellcode, den Sie sich beziehen können:
https://github.com/PixarAnimationStudios/OpenSubdiv/blob/master/cmake/FindGLFW.cmake
InformationsquelleAutor micfan