2013-07-09 15 views
5

Ho compilato glfw3 e gli esempi inclusi usando cmake e lo faccio senza problemi. Sulla scrittura del mio primo progetto. Essendo nuovo per opengl e glfw, e privo di esperienza con C e cmake, sto faticando a capire i file di build di esempio, o anche quali librerie collegare e/o parametri del compilatore da utilizzare nel mio progetto.Come posso creare il mio progetto glfw3 su Linux?

Diciamo che ho una sola cartella con un file, boing.c per ora. Come lo compilerei?

La semplice esecuzione di gcc -lglfw3 -lm -lGL -lGLU boing.c fornisce un muro di riferimenti indefiniti, a partire da sin e atan2, seguiti da varie voci gl e glfw. Cosa mi manca?

Come potrei scrivere un makefile? Esiste un modello o un esempio di cmake, che semplicemente non ho capito come utilizzare o adattare? Qualcuno sa di un progetto open source (o meglio di un piccolo esempio o modello) che usa glfw3 - quindi posso dare un'occhiata?

Immagino che cmake sarebbe il migliore, quando voglio diventare multipiattaforma ad un certo punto. Ma come faccio a compilare la cosa * * senza troppi problemi, quindi posso iniziare con alcuni tutorial ...?

Sono un noob moderato che utilizza Ubuntu a 32 bit raring. Sto usando Vim per ora.

+0

potete inserire gli errori che si stanno ottenendo. – iKlsR

+0

@iKlsR Ecco gli errori: http://pastebin.com/0HjYNpkS Ho iniziato a imparare Nimrod invece nel frattempo. Linguaggio fantastico ed elegante. – Jostein

risposta

9

Suggerisco caldamente di installare CMake se si non l'hai già fatto

Anche se suggerisco di utilizzare CMake, è comprensibilmente non lo strumento più semplice da utilizzare, ma è molto meglio che creare i propri file di creazione.

Per compilare boing.c (che a proposito, è un esempio fornito da glwf per coloro che non sono a conoscenza) essere nella directory principale glfw e digitare cmake . poi make

E che dovrebbe costruire tutti gli esempi.

Ma, per rispondere come fare un semplice file CMake, ecco un esempio CMakeLists.txt per costruire boing.c:

cmake_minimum_required(VERSION 2.8) 

project(BOING_PROJECT) # this is case sensitive 

###################################### 
# finds OpenGL, GLU and X11 
find_package(OpenGL REQUIRED) 
if(NOT OPENGL_FOUND) 
    message("ERROR: OpenGL not found") 
endif(NOT OPENGL_FOUND) 
set(GL_LIBRARY GL GLU X11) 

add_executable(boing boing.c) 

# linking "glfw" and not "glfw3" 
# assumes that glfw was built with BUILD_SHARED_LIBS to ON 
target_link_libraries(boing glfw ${GL_LIBRARY} m) 

La struttura di directory di quanto sopra sarebbe

boing_project/ 
    boing.c 
    CMakeLists.txt 

Tuttavia , questo non risponde perché hai ottenuto tutti quegli errori.

la causa del vostro errori è che hai fornito gli argomenti a GCC in ordine errato, provare
gcc boing.c -lglfw3 -lm -lGL -lGLU
o meglio
gcc boing.c -o boing -Wall -lglfw3 -lm -lGL -lGLU

Per rispondere alla tua domanda: ci sono progetti open source che utilizzano glfw che puoi guardare attraverso? Basta cercare glfw su github e troverai molto.

+1

E se tu, come me, ti stai chiedendo perché l'ordine è importante, controlla questo: http://stackoverflow.com/questions/45135/linker-order-gcc – paldepind

12

è necessario includere Library Ti piace questa

-lGL -lGLU -lglfw3 -lX11 -lXxf86vm -lXrandr -lpthread -lXi

#REF: http://www.blogosfera.co.uk/2013/07/how-to-build-install-glfw-3-and-use-it-in-a-linux-project/

Spiacente non sono bravo in inglese

+0

Grazie, ma no, mi dà ancora esattamente gli stessi errori! Forse c'è un baco di qualche tipo .. – Jostein

+3

Questa risposta è corretta nel caso in cui fornisca le informazioni che dobbiamo collegare alle librerie aggiuntive su linux, come Xi e Xrandr. Non sono sicuro dell'ordine, ho GL dopo glfw3, non so se quei mathers. Maggiori dettagli su questo possono essere trovati qui: http://stackoverflow.com/questions/17768008/how-to-build-install-glfw-3-and-use-it-in-a-linux-project/17772217 –

+0

One punto per Robert, la sequenza conta ... – ranjan

0

riesco a costruire progetti glfw utilizzando i seguenti flag: bandiere del compilatore:

-c -Wall 

Linker bandiere:

-lglfw3 -lGLEW -lX11 -lXrandr -lXinerama -lXi -lXxf86vm -lXcursor -ldl -lGL -lm -lpthread 
Problemi correlati