Annonces Google
Serveur IRC
Serveur : irc.portlane.se
Canal : #AmigaNG
Activité du Site

Pages vues depuis 25/07/2007 : 25 265 527

  • Nb. de membres 187
  • Nb. d'articles 1 270
  • Nb. de forums 19
  • Nb. de sujets 20
  • Nb. de critiques 24

Top 10  Statistiques

Index du forum »»  Création-Développement »» Script MakeFile C/C++

Script MakeFile C/C++#1526

3Contributeur(s)
AmiDARKthellieralex
3 Modérateur(s)
K-LElwoodcorto
AmiDARK AmiDARKicon_post
[Résolu sur AI]
J'aimerais quérir l'aide d'une personne s'y connaissant en scripts "makefile" pour des projets en C.

J'aimerais que ce script puisse compiler plusieurs fichiers .c -> .o
et qu'au final, il prenne tous ces fichiers .o qu'il regrouperait dans un .a

Quelqu'un saurait comment s'y prendre ?
[Résolu sur AI]

@+
AmiDARK

Message édité par : AmiDARK / 14-04-2013 23:14
thellier thelliericon_post
Je réalise que j'ai pas répondu à la (vraie) question sur Amiga-Impact:
cad
"Faire un .a avec plusieurs .o ?"

Je crois que faire comme si on voulais compiler un éxecutable et juste rajouter les options
-nostartfiles -o ma_lib.a
doit être sufisant...

Alain

Exemple :
gcc -noixemul -O0 -nostartfiles -c Microbe3D_lib_ppc.c
gcc -noixemul -O3 -nostartfiles -c Microbe3D-28.c
gcc -noixemul -nostartfiles -o Microbe3D.library-ppc Microbe3D_lib_ppc.o Microbe3D-28.o

Ici j'ajoute un header de .library (Microbe3D_lib_ppc.c ) mais le principe reste le même


AmiDARK AmiDARKicon_post
Pas grave ;)

Merci :)
@+
alex alexicon_post
Bon alors j'ai pas envie d'aller chercher le sujet sur AI, AmiDark quel est ton problème exactement?

Créer un fichier .a pour AmiDarkEngine? Histoire de pouvoir distribuer un binaire pas les sources je suppose ;-)

Si c'est ça il faut utiliser la commande 'ar' (diminutif de 'archive') en utilisant la ligne de commande du style:

ar -rc AmiDarkEngine.a $(OBJ)


(évidemment je suppose ici que tu as une variable OBJ contenant tous les .o que tu veux mettre dans ta lib AmiDarkEngine.a)
--
AmigaOne A1222
AmigaOne X1000 - RadeonHD - 2 Gio RAM
AmigaOne XE G4@933 - Radeon 9200 SE - 512 Mio RAM
AmiDARK AmiDARKicon_post
Salut Alex,

Non crée un .o, un .exe, un .a ça je sais faire :)

En fait je suis en train de modifier *structurellement* l'AmiDARK Engine pour plus de flexibilité et certains gains secondaires.

L'objectif est de faire que chaque module de l'AmiDARK Engine (Basic2D, Image, Sprites, etc.) soit indépendant et ne soit pas forcément inclut dans l'Exécutable final si "non utilisé".
Donc je vais devoir créer plusieurs .o d'affilée et compiler le tout dans un .a

J'ai un peu regardé comment FreeType & FTGL font ... mais leur fichiers MakeFile font plus de 20ko c'est un peu compliqué à décortiquer et j'avoue avoir la flemme de "perdre du temps pour ça"... Mais bon, on m'a donné des informations sur AI qui devraient permettre de tout mettre en place ;)

@+
alex alexicon_post
Bon je ne comprends pas ton problème alors: si tu sais déjà faire un .a à partir de .o qu'est-ce qui t'empêches de faire plusieurs .a ?

En plus normalement le compilateur ne prend dans ton .a que les fonctions dont il a besoin pas la totalité.
--
AmigaOne A1222
AmigaOne X1000 - RadeonHD - 2 Gio RAM
AmigaOne XE G4@933 - Radeon 9200 SE - 512 Mio RAM
AmiDARK AmiDARKicon_post
Non alex,

Crée un .a qui contienne plusieurs .o
la pour l'instant tout est dans un unique .o contenu dans un .a

L'objectif serait de faire un truc genre :

LibAmiDARK.a{
- AmiSDK.o
- Basic2D.o
- Basic3D.o
- Bitmap.o
- ...
}

Tu comprends mieux ?
alex alexicon_post
okay alors disons que ce que tu veux c'est un truc du genre :

=== debut du makefile ===

AR = ppc-amigaos-ar
GCC = ppc-amigaos-gcc

CFLAGS = -O2 -Wall

LIBNAME = AmiSDK.a
OBJ = AmiSDK.o Basic2D.o Basic3D.o Bitmap.o

$(LIBNAME): $(OBJ)
$(AR) rc $@ $^

; dependences
AmiSDK.o: AmiSDK.c AmiSDK.h autreFichierCommun.h
Basic2D.o: Basic2D.c Basic2D.h Bitmap.h
Basic3D.o: Basic3D.c Basic3D.h Bitmap.h


== fin du makefile ===
--
AmigaOne A1222
AmigaOne X1000 - RadeonHD - 2 Gio RAM
AmigaOne XE G4@933 - Radeon 9200 SE - 512 Mio RAM
AmiDARK AmiDARKicon_post
Merci Alex, effectivement ta vision des choses est encore plus simple que la soluce que j'ai eu sur AI.
Je garde les deux sous le bras car la tienne est très opérationnelle mais les docs GNU et l'aide sur AI me permettront peut-être d'autre choses.

Merci à toi.
Tout cela me sera très utile :)

@+
alex alexicon_post
Ravi d'avoir pu t'aider, attention à la tabulation devant $(AR) qui n'est pas passée sur le site :paf
--
AmigaOne A1222
AmigaOne X1000 - RadeonHD - 2 Gio RAM
AmigaOne XE G4@933 - Radeon 9200 SE - 512 Mio RAM
Petites Annonces

0 annonce(s) publiée(s)

Consulter

AmigaOS 4.1

Laissez-vous tenter par
AmigaOS 4.1
AmiTheme

AmiTheme