Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1947 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  makefile sous linux comment ca marche ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

makefile sous linux comment ca marche ?

n°402071
xilebo
noone
Posté le 21-05-2003 à 08:49:28  profilanswer
 

salut,
 
je ne manipule pas bien le makefile donc j ai quelques petites questions :
 
 peut on specifier dans un makefile une option de compilation permettant d inserer un    #define dans le code, car sous windows le #define _WIN32 existe grace au compilateur mais sous linux je ne sais pas si un tel #define existe ( j ai essayé _LINUX mais apparemment ca existe pas)
 
est il egalement possible de faire la chose suivante :
 
make debug -> me compile avec un #define _DEBUG
make release -> me compile avec un #define _RELEASE
 
Enfin , comment  faire pour  specifier le compilateur pour tel ou tel processeur dans le makefile :
 
actuellement, selon la plateforme sur laquelle je suis, j edite mon makefile pour changer le compilateur. Mais j aimerai faire :
 
make arm -> pour compiler mon  prog avec le cross compilateur arm
make i386 pour compiler avec gcc .
 
merci de vos reponses

mood
Publicité
Posté le 21-05-2003 à 08:49:28  profilanswer
 

n°402190
bobuse
Posté le 21-05-2003 à 09:59:16  profilanswer
 

[:drapo]


---------------
get amaroK plugin
n°402242
xilebo
noone
Posté le 21-05-2003 à 10:23:11  profilanswer
 

bouh :cry: personne pour m aider :??:

n°402262
cyplp
Posté le 21-05-2003 à 10:28:25  profilanswer
 

je sais pas mais tu peux faire
#ifdef DEBUG dans ton source pour le debug
?t #ifddef DEBUG pour realase
et compilé avec gcc -D DEBUG pour le debug

n°402298
Kristoph
Posté le 21-05-2003 à 10:44:58  profilanswer
 

Pour definir un symbole du preprocesseur a partir du makefile, il faut utiliser l'option -D de gcc comme ceci :
gcc -DDEBUG fichier.c
 
Sinon, pour ce que tu veux faire avec differentes archi et autres, je ne saurais que te conseiller de te trouver une bonne doc sur le make de GNU, ou sans doute mieux, d'utiliser automake/autoconf.

n°402336
xilebo
noone
Posté le 21-05-2003 à 10:59:13  profilanswer
 

ok l option -D je ne la connaissais pas . -D_DEBUG ca marche ? (mais suis je bete , je vais essayer :D)
 

n°402410
xilebo
noone
Posté le 21-05-2003 à 11:29:33  profilanswer
 

je n ai pas trouvé de doc concernant la structure du fichier makefile (les sites sur google sont tres pauvres, il disent tous la meme chose et rien d interessant)
 
Ce que je voudrais faire , c pouvoir affecter une valeur a une variable selon la cible :
 
ex :
 

Code :
  1. debug : main.o
  2.          OPTIONS= -Wall -DDEBUG
  3.           gcc -o main main.o
  4. release : main.o
  5.          OPTIONS= -Wall -DRELEASE
  6.           gcc -o main main.o
  7. main.o : main.cpp main.h
  8.           gcc -c $(OPTIONS) main.cpp


 
 
mais ca ca marche pas... apparemment on ne peut pas affecter de variable dans une cible. Quelqu un voit comment faire ?
 
 
merci

n°402871
deltaden
Posté le 21-05-2003 à 15:12:49  profilanswer
 

aucune idée, :(
mais tu as essayé de regarder la page de manuel de make? la structure du makefile est décrite il me semble

n°403055
xilebo
noone
Posté le 21-05-2003 à 15:57:48  profilanswer
 

:( non elle n est pas decrite, ils disent deregarder dans make.info et je n ai pas ce fichier... pas grave je me debrouillerai autrement merci :)

n°403894
cyplp
Posté le 22-05-2003 à 10:50:14  profilanswer
 

essaye ca  
 
 

Code :
  1. release : option_r main.o
  2.           gcc -o main main.o
  3. debug : option_d main.o
  4.           gcc -o main main.o
  5. optionr :
  6.          OPTION = -D RELEASE
  7. optiond :
  8.          OPTION = -D DEBUG
  9. main.o : main.cpp main.h
  10.          gcc -c $(OPTION) main.cpp

mood
Publicité
Posté le 22-05-2003 à 10:50:14  profilanswer
 

n°2062532
cricket18
Posté le 11-03-2011 à 12:30:42  profilanswer
 

Bonjour,
 
Une fois que le makefile est fait, que faut-il taper dans le terminal pour exécuter le programme ?
 
est-ce que c'est :
make
./main.c
 
 
Merci de votre aide.

n°2062611
guepe
J'ai du noir sur la truffe ?
Posté le 11-03-2011 à 16:00:50  profilanswer
 

cricket18 a écrit :

Bonjour,
 
Une fois que le makefile est fait, que faut-il taper dans le terminal pour exécuter le programme ?
 
est-ce que c'est :
make
./main.c
 
 
Merci de votre aide.


make tout court. Dans ton make, tu a précisé le target de la compilation : ./TARGET et hop, ça roule.


---------------
Un blog qu'il est bien
n°2064956
Pascal le ​nain
Posté le 21-03-2011 à 07:31:02  profilanswer
 

Si par defaut (et c'est conseille) ton make compile avec les flags de debug, ton makefile doit etre
 


CXX_FLAGS= -W -Wall -Werror -pedantic # flags conseilles pour pas faire de conneries
 
all: set_debug main.o
          gcc -o main $(CXX_FLAGS) main.o
 
debug: all
 
release: main.o # A priori, inutile de setter une macro RELEASE, puisque seule DEBUG est utilisee dans le code
          gcc -o main $(CXX_FLAGS) main.o
 
set_debug:
          CXX_FLAGS= $(CXX_FLAGS) -DDEBUG          
 
%.o : %.cpp %.h
          gcc -c $(CXX_FLAGS) %.cpp -o $@ #Histoire de rester generique
 


 
Et tu fais "make", "make all" ou "make debug" pour compiler en debug. "make release" pour compiler sans les flags de debug.
 
Sinon, peu de mon utilise encore les makefiles a la main. Regarde plutot du cote de cmake, c'est assez magique  :ange:  : http://florian-goujeon.developpez. [...] nitiation/


Message édité par Pascal le nain le 21-03-2011 à 07:34:47

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  makefile sous linux comment ca marche ?

 

Sujets relatifs
autogenerate d'un datagrid qui ne marche pasRequete SQL sous SQLserver : ca marche pas ... RESOLU !!!!
[glib-2.0 / Makefile] petit problème d'inclusion[SHELL Linux] Traiter la première ligne, et rebalancer le reste
Get_Immediate sans Echo sous linux ...hmm comment compiler sous linux avec des options ?
[XML/XSL] pk ça marche po ??[API linux] struct dirent
[PHP] Chmod avec free qui marche pas[C++/Builder] ch. méthode socket, comme linux : bytesAvailable() !URG!
Plus de sujets relatifs à : makefile sous linux comment ca marche ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR