gnatmake with make : erreur lors de l'édition de lien. - Ada - Programmation
Marsh Posté le 09-01-2015 à 17:06:56
J'ai trouvé.
C'est l'exécutable qu'il peut pas créer parce que il est à la racine est c'est le nom du sous-répertoire.
Si j'ajoute -o $$i/bin/$$i, ça doit le faire.
Merci.
Marsh Posté le 10-01-2015 à 18:05:17
La suite de mon Makefile :
Code :
|
J'inclue à présent chacune des sous- bibliothèque pour compiler le sous-projet courant.
Marsh Posté le 11-01-2015 à 15:35:18
re- bonjour,
Ce Makefile, c'est tout simplement de la balle !
J'ai rajouté un contrôle de condition (un if [ -f $$i/src/$$i.adb ] then) pour ne faire appelle à gnatmake que si un fichier principal est présent dans les sources.
Le nouveau Makefile, j'ai enlevé le .PHONY qui ne sert à rien, j'ai ajouté l'option -q (quiet ::= silencieux), je cherche comment passer le nom du projet (ici Arch) en paramètre de ligne de commande !
part=`ls -d Arch*` |
Pour que ça fonctionne, je pense qu'il faut garder/tester l'architecture à mettre en place.
Si je fais un "ls" du répertoire courant "Arch" j'ai :
Arch Arch-Angels Arch-Environment Arch-Install Archman Arch-Window Makefile |
Dans chacun des sou-répertoire j'ai un répertoire "bin", "obj", "src/" et "src/lib".
Il faudrait trouver un moyen de générer le projet à partir des noms du sous-projets.
Ici Archman est le nom du sous-répertoire du programme principal, il contient "src/Archman.adb"
Si j'appelle make, par défault d'argument j'obtien :
for i in `ls -d Arch*` ; do \ |
Un warning pour nom de fichier "non conforme".
ls Archman/bin/ |
Citation : Archman |
J'ai bien un binaire dans Arch/Archman/bin/.
Bref, on est dimanche.
Marsh Posté le 11-01-2015 à 17:19:08
Apparemment, impossible de faire comme je veux.
Mais j'ai créé un fichier qui contient le nom de projet et les noms des sous-projets.
Tel : cat > Project.default
Testing
Testing-Alpha
Testing-Omega
Testing
Ensuite j'ai modifier les variables te j'ai enrichi mon Makefile avec une cible "prepare" :
Code :
|
En vous souhaitant bonne prog !
Marsh Posté le 11-01-2015 à 18:12:08
Correction de la ligne 3 !
Code :
|
Marsh Posté le 09-01-2015 à 16:58:45
Bonjour,
Je travaille dans une entreprise de développement logiciel qui s'appelle "Arch" qui est constitué de sous projet "Arch*"
Voici le makefile :
.PHONY: Archaos
part=`ls -d Arch*`
all:
mrproper Archaos
Archaos:
for i in $(part) ; do \
echo $$i; \
gnatmake $$i/src/$$i.adb -D $$i/obj/ -aIPragmARC; \
done
mrproper:
for i in $(part) ; do \
echo $$i; \
rm -f $$i/obj/*; \
done
clean:
for i in $(part) ; do \
echo $$i; \
rm -f $$i/src/lib/*~; \
done
Voici la sortie de make :
for i in `ls -d Arch*` ; do \
echo $i; \
gnatmake $i/src/$i.adb -D $i/obj/ -aIPragmARC; \
done
Archadia
gnatmake: "Archadia.adb" not found
Archai
gnatmake: "Archai.adb" not found
Archaos
gcc-4.6 -c -IArchaos/src/ -IPragmARC -I- -o /home/manuel/Arch Chaos Engineering/Archaos/obj/Archaos.o Archaos/src/Archaos.adb
Archaos.adb:4:11: warning: file name does not match unit name, should be "archaos.adb"
gnatbind -aO/home/manuel/Arch Chaos Engineering/Archaos/obj -aIPragmARC -x /home/manuel/Arch Chaos Engineering/Archaos/obj/Archaos.ali
gnatlink /home/manuel/Arch Chaos Engineering/Archaos/obj/Archaos.ali
/usr/bin/ld: cannot open output file Archaos: Is a directory
collect2: ld returned 1 exit status
gnatlink: error when calling /usr/bin/gcc-4.6
gnatmake: *** link failed.
Archetypes
gnatmake: "Archetypes.adb" not found
Archmain
gnatmake: "Archmain.adb" not found
Archman
gnatmake: "Archman.adb" not found
Archnet
gnatmake: "Archnet.adb" not found
Archworks
gnatmake: "Archworks.adb" not found
make: *** [Archaos] Erreur 4
Chaque sous- répertoire de "Arch*" contient un sous- répertoire src et obj
Comment contourner quel problème ?
Je vois pas ! Svp. Merci.
Message édité par par l'anneau de l'ia le 09-01-2015 à 16:59:04
---------------
Toute expression prend un sens spirituel qui nous influence dans notre quête de l'Homme.