problème avec un makefile

problème avec un makefile - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 13-09-2005 à 10:41:40    

Voilà je ne comprends pas pourquoi, mais si dans mon makefile j'écris ça :

test: both
        cp both test
        cd test
        ./test.sh | uniq
        cd ..


Celà ne marche pas car il ne fait pas vraiment le "cd test" et du coup ne trouve pas test.sh.
Par contre si j'écris ça :

test: both
        cp both test; cd test; ./test.sh | uniq; cd ..


 
Ca marche ...
 
Pourriez-vous m'expliquer pourquoi ?
 
merci beaucoup :)

Reply

Marsh Posté le 13-09-2005 à 10:41:40   

Reply

Marsh Posté le 13-09-2005 à 11:33:31    

cp both test
test/test.sh|blabla


 
serait plus propre

Reply

Marsh Posté le 13-09-2005 à 11:37:58    

ory a écrit :

cp both test
test/test.sh|blabla


 
serait plus propre


 
ah oui tiens c'est vrai :o
 
mais sinon juste pour ma culture générale, une idée sur la raison de ce problème ?

Reply

Marsh Posté le 13-09-2005 à 11:40:21    

hum, en fait non :sweat:
 
en fait test.sh a besoin d'être executé depuis son répertoire car il utilise des fichiers qui sont dedans sans les préfixer par le répertoire
 
(il a des instructions du genre cat machin.txt)


Message édité par freewol le 13-09-2005 à 11:40:42
Reply

Marsh Posté le 13-09-2005 à 11:43:41    

Sûrement une variable d'environnement réinitialisée à chaque nouvelle commande, genre $CURDIR:
 

bla:
        rm -rf plop
        mkdir plop
        @echo ${CURDIR}
        cd plop
        @echo ${CURDIR}
        touch foo


 
 


$ make bla
rm -rf plop
mkdir plop
/tmp
cd plop
/tmp
touch foo


Reply

Marsh Posté le 13-09-2005 à 12:33:09    

ory a écrit :

Sûrement une variable d'environnement réinitialisée à chaque nouvelle commande, genre $CURDIR:
 

bla:
        rm -rf plop
        mkdir plop
        @echo ${CURDIR}
        cd plop
        @echo ${CURDIR}
        touch foo


 
 


$ make bla
rm -rf plop
mkdir plop
/tmp
cd plop
/tmp
touch foo



 
et comment faire pour l'outrepasser ?
j'ai essayé un CURDIR=${CURDIR}/test, et non seulement c'est moche mais en plus ça ne marche pas :(

Reply

Marsh Posté le 13-09-2005 à 12:45:19    

définir ta propre variable ?

Reply

Marsh Posté le 13-09-2005 à 17:33:20    

Tu met tout sur une ligne, comme tu l'as deja fait. Si ca ne tiens pas sur une ligne, coupe la ligne avec un \. Cela dit je suis sur qu'il y a une meilleur solution.

Reply

Marsh Posté le 13-09-2005 à 18:41:06    

chaque ligne d'un makefile est lancé dans un shell different... donc, si tu fait uncd sur une ligne, puis que tu essaye de lancer ton prog sur une autre ligne, ca ne peut pas marcher...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed