# Makefile pour GLUT



## Taido (3 Mars 2004)

Bonjour

Je suis nouveau sur mac, ca ne fait pas une semaine que j'ai switché (super l'ibook G4 12" 
	

	
	
		
		

		
			





), donc je ne connais pas encore très bien la plateforme.

Mon probleme est le suivant. j'ai du code en C à compiler, qui utilise la libraire OPENGL, et GLUT.
Quand je compile à partir de Xcode (en créant un nouveau projet, et en rajoutant les frameworks openGL, glut, et cacoa), pas de probleme, je vois bien mon résultat graphique.
Par contre, cela est long &amp; fastidieux, car à chaque fois je dois créer un nouveau projet, et copier coller un de mes fichiers dans le main.c du projet ... s'il y a une solution plus simple, qui me permet de compiler directmeent mon code sans faire tout ça ...

Je pensais faire un makefile. En cherchant sur le net j'en ai trouvé un, mais il ne marche pas.

Le probleme c'est qu'il ne trouve pas les ficher gl.h, et glu.h
(le code a été écrit à partir de linux, je l'ai adapté en changeant les includes, cad en mettant GLUT/ ... au lieu de GL  :
#include &lt;GLUT/gl.h&gt;           
#include &lt;GLUT/glu.h&gt;         
#include &lt;GLUT/glut.h&gt; 


Mais avec mon makefile, il ne trouve pas les fichier gl.h et glu.h (alors qu'avec Xcode cela marche!!)
Quelqu'un peut m'aider ?
Peut etre est ce les include qui ne sont pas bon ?
(j'ai trouvé sur le net le fait qu'il fallait changer GL par GLUT) ...

Merci

Je joins le makefile, peut etre que cela vient de là ...

--------------------------------------

# makefile for simple glut programs on Mac OS X.

APP_NAME   = osx_glut_program
CPP_FLAGS  = -c
FRAMEWORKS = -framework OpenGL -framework GLUT -framework Foundation

$(APP_NAME): main.o
	g++ main.o -o $(APP_NAME) $(FRAMEWORKS)

main.o: main.cpp
	g++ $(CPP_FLAGS) main.cpp

explain:
	@echo "APP_NAME   == $(APP_NAME)"
	@echo "CPP_FLAGS  == $(CPP_FLAGS)"
	@echo "FRAMEWORKS == $(FRAMEWORKS)"

clean:
	rm -f $(APP_NAME)
	rm -f *.o


----------



## plumber (3 Mars 2004)

-I/usr/include ? -L /usr/lib ?


----------



## Einbert (3 Mars 2004)

Je ne connais pas la syntaxe exacte pour intégrer les frameworks dans la ligne de commande pour compiler, mais je pense que le problème vient de la ligne FRAMEWORKS = ...
Dans le cas extrême (et s'il n'y a pas beaucoup de fichiers à modifier), tu peux toujours modifier les include et y mettre le path complet pour accéder aux librairies se trouvant dans le framework OpenGL . Donc la syntaxe pour l'include sera qqch comme :

#include "le_path_vers_le_framework_opengl/gl.h"

++


----------



## Taido (3 Mars 2004)

Ou sont situés les frameworks ?
je débute avec les macs 
	

	
	
		
		

		
		
	


	



Merci


----------



## la tortue (3 Mars 2004)

A mon avis les includes ne sont pas bons, peut-être que si tu écris ce qui suit ça va marcher.

#include &lt;OpenGL/gl.h&gt; 
#include &lt;OpenGL/glu.h&gt; 
#include &lt;GLUT/glut.h&gt;

Car les headers gl.h et glu.h sont dans le framework OpenGL.framework
et glut.h est dans le framework GLUT.framework.

Les frameworks sont situés à l'emplacement habituel: /System/Library/Frameworks


----------



## Taido (3 Mars 2004)

Alors, j'ai essayé de changer les includes en mettant OpenGL/gl.h, ou le chemin (/System/Library/ ...) mais ni l'un ni l'autre n'a marché.

Je ne pense pas que cela vienne du code, étant donné que sous Xcode cela marche bien. Je pense plutot que cela vienne du makefile ...
La portabilité de mon code étant importante (il faut qu'il marche aussi sur un systeme Linux), j'aimerais ne pas avoir à changer les includes à chaque fois ...
enfin bon, déjà j'aimerais que ca marche !


----------



## la tortue (3 Mars 2004)

Pourrais-tu afficher les erreurs de compilation, ça pourrait aider...

Sinon, la variable $FRAMEWORK ne doit pas poser de problème

extrait du manuel ld(1):

       -framework name[,suffix]
              Specifies a framework to link against.  Frameworks  are  dynamic
              shared  libraries,  but  they are stored in different locations,
              and therefore must be searched for differently. When this option
              is  specified,  ld  searches for framework `name.framework/name'
              first in any directories specified with the -F option,  then  in
              the  standard  framework  directories /Library/Frameworks, /Net-
              work/Library/Frameworks,  and  /System/Library/Frameworks.   The
              placement  of the -framework option is significant, as it deter-
              mines when and how the framework is searched.  If  the  optional
              suffix is specified the framework is first searched for the name
              with the suffix and then without.


----------



## Taido (4 Mars 2004)

donc quand je compile avec le makefile, il me fait la liste de toutes les fonctions qu'il ne connait pas (toutes les fonctions comme glBegin, glEnd, etc ...)

Sinon j'ai remarqué quelque chose. Les include gl.h et glu.h, dans Xcode ne sont pas necessaire ... ?!
car quand je les mets en commentaire, j'arrive quand même à compiler &amp; voir mon rendu ...

enfin je n'y comprend plus rien
Comment vous faites vous pour compiler votre code opengl ?

Sinon, s'il y a une méthode pour qu'Xcode utilise toujours les  bon frameworks, sans m'obliger à créer un nouveau projet, à copier coller mon code dans le fichier main.c du nouveau projet, et de choisir les frameworks ...
car toutes ces manipulations prennent du temps ...

Je vous remercie pour votre aide !


----------



## la tortue (4 Mars 2004)

Si ça marche avec Xcode, tu peux toujours compiler en ligne de commande avec xcodebuild, si ça peut aider...
 <font class="small">Code:</font><hr /><pre>  
Usage: xcodebuild [-project &lt;projectname&gt;] [-activetarget] [-alltargets] [-target &lt;targetname&gt;]... [-activebuildstyle] [-buildstyle &lt;buildstylename&gt;] [-optionalbuildstyle &lt;buildstylename&gt;] [&lt;buildsetting&gt;=&lt;value&gt;]... [&lt;buildaction&gt;]...
       xcodebuild [-list]
</pre><hr />


----------

