Pages : 1
#1 Le 18/11/2011, à 23:20
- Spitfire 95
[Résolu] Problème de makefile
Bonjour,
Voici mon makefile :
all:
gcc -Wall -O6 `pkg-config --cflags gtk+-3.0` -o "pendu" src/*.c `pkg-config --libs gtk+-3.0`
install:
# /
mkdir -p "./debian/pendu"
# /etc
cp -p -r "./datas/etc/" "./debian/pendu/"
# /usr
cp -p -r "./datas/usr/" "./debian/pendu/"
mkdir "./debian/pendu/usr/share/locale"
mkdir "./debian/pendu/usr/bin"
mv "./pendu" "./debian/pendu/usr/bin/"
# Compiling translations
for translation in "po/*.po"
do
mkdir -p "debian/pendu/usr/share/locale/$(basename $translation .${translation##*.})/LC_MESSAGES/"
msgfmt "po/$(basename $translation)" -o "debian/pendu/usr/share/locale/$(basename $translation .${translation##*.})/LC_MESSAGES/pendu.mo"
done
Le code qui bloque est la compilation des po en mo. J'ai une erreur /bin/sh: 1: Syntax error: end of file unexpected quoi que je fasse.
Les dernières lignes seules dans un .sh marchent pourtant.
Si quelqu'un pouvait me montrer mon erreur ce serait sympa
Merci d'avance.
Dernière modification par Spitfire 95 (Le 19/11/2011, à 14:41)
Trisquel GNU/Linux 6.0 / Fedora 19 & rawhide.
joueur ryzom et wesnoth
Développeur livewallpaper
Membre déserteur et traître de la brigade des S.
Hors ligne
#2 Le 18/11/2011, à 23:22
- sputnick
Re : [Résolu] Problème de makefile
Verifie que tu a bien des tabs et pas des espaces pour indenter
On ne peut pas mettre d'array dans un string!
https://sputnick.fr/
Hors ligne
#3 Le 18/11/2011, à 23:23
- Spitfire 95
Re : [Résolu] Problème de makefile
J'ai regardé déjà trois fois sur deux IDE (Geany et Gedit) et à priori non...
Trisquel GNU/Linux 6.0 / Fedora 19 & rawhide.
joueur ryzom et wesnoth
Développeur livewallpaper
Membre déserteur et traître de la brigade des S.
Hors ligne
#4 Le 19/11/2011, à 10:53
- pingouinux
Re : [Résolu] Problème de makefile
Bonjour,
Quelques remarques, même si ça ne résoud pas le problème :
mkdir "./debian/pendu/usr/share/locale"
Est-ce que les répertoires intermédiaires existent ? Sinon, il faut faire : mkdir -p ...
msgfmt [OPTION] filename.po ...
Les options semblent devoir être en tête, contrairement à :
msgfmt "po/$(basename $translation)" -o "debian/pendu/usr/share/locale/$(basename $translation .${translation##*.})/LC_MESSAGES/pendu.mo"
Hors ligne
#5 Le 19/11/2011, à 11:10
- pingouinux
Re : [Résolu] Problème de makefile
Suite :
Pour utiliser une variable dans un makefile : $$var, et non $var
Les boucles doivent être sur une seule ligne (/bin/sh: 1: Syntax error: end of file unexpected vient de là) :
for a in aa bb cc dd ; \ do \ echo $${a} ; \ done
Dernière modification par pingouinux (Le 19/11/2011, à 11:11)
Hors ligne
#6 Le 19/11/2011, à 13:55
- Spitfire 95
Re : [Résolu] Problème de makefile
Merci pour cette réponse mais j'ai un autre problème maintenant :
all:
gcc -Wall -O6 -o "pendu" src/*.c `pkg-config --libs gtk+-3.0 --cflags gtk+-3.0`
install:
cp -p -r "./datas/" "./debian/pendu/"
mkdir "./debian/pendu/usr/share/locale"
mkdir "./debian/pendu/usr/bin"
mv "./pendu" "./debian/pendu/usr/bin/"
# Compiling translations
for translation in "po/*.po"; \
do \
mkdir -p debian/pendu/usr/share/locale/$$(basename $${translation} .po)/LC_MESSAGES/ \
msgfmt po/$$(basename $${translation}) -o debian/pendu/usr/share/locale/$$(basename $${translation} .po)/LC_MESSAGES/pendu.mo; \
done
...
for translation in "po/*.po"; \
do \
mkdir -p debian/pendu/usr/share/locale/$(basename ${translation} .po)/LC_MESSAGES/ \
msgfmt po/$(basename ${translation}) -o debian/pendu/usr/share/locale/$(basename ${translation} .po)/LC_MESSAGES/pendu.mo; \
done
basename: extra operand `po/it.po'
Try `basename --help' for more information.
basename: extra operand `po/it.po'
Try `basename --help' for more information.
basename: extra operand `po/it.po'
Try `basename --help' for more information.
mkdir: invalid option -- 'o'
Try `mkdir --help' for more information.
make: *** [install] Error 1
Il ne me crée pas les dossiers debian/pendu/usr/share/locale/$$(basename $${translation} .po)/LC_MESSAGES/
Et il semblerai que la réponse soit toujours it.po au lieu de it.po es.po fr.po
Une idée ?
Trisquel GNU/Linux 6.0 / Fedora 19 & rawhide.
joueur ryzom et wesnoth
Développeur livewallpaper
Membre déserteur et traître de la brigade des S.
Hors ligne
#7 Le 19/11/2011, à 14:12
- pingouinux
Re : [Résolu] Problème de makefile
Il faut remplacer
for translation in "po/*.po"; \
par
for translation in po/*.po; \
À ta place, je simplifierai un peu :
for translation in po/*.po; \
do \
bsn=$$(basename $${translation} .po); \
mkdir -p debian/pendu/usr/share/locale/$$bsn/LC_MESSAGES/ \
msgfmt -o debian/pendu/usr/share/locale/$$bsn/LC_MESSAGES/pendu.mo po/$$bsn.po; \
done
Dernière modification par pingouinux (Le 19/11/2011, à 14:22)
Hors ligne
#8 Le 19/11/2011, à 14:40
- Spitfire 95
Re : [Résolu] Problème de makefile
Ça fonctionne merci.
Code complet si ça peut aider quelqu'un :
all:
gcc -Wall -O6 -o "pendu" src/*.c `pkg-config --libs gtk+-3.0 --cflags gtk+-3.0`
install:
cp -p -r "./datas/" "./debian/pendu/"
mkdir "./debian/pendu/usr/share/locale"
mkdir "./debian/pendu/usr/bin"
mv "./pendu" "./debian/pendu/usr/bin/"
# Compiling translations
for translation in po/*.po; \
do \
po=$$(basename $${translation} .po); \
mkdir -p debian/pendu/usr/share/locale/$$po/LC_MESSAGES; \
msgfmt -o debian/pendu/usr/share/locale/$$po/LC_MESSAGES/pendu.mo po/$$po.po; \
done
Trisquel GNU/Linux 6.0 / Fedora 19 & rawhide.
joueur ryzom et wesnoth
Développeur livewallpaper
Membre déserteur et traître de la brigade des S.
Hors ligne
Pages : 1