OVH Cloud OVH Cloud

make

29 réponses
Avatar
Jean Pierre Daviau
Bonjour à tous,
alt.make: il n'y a personne
Pourquoi ces commandes ne fonctionnent-elles pas
#-------------------- make FILE=
fichier---------------------------------------------
mkdir $(FILE)
mv -v -u $(FILE).exe $(FILE)/$(FILE).exe
mv -v -u $(FILE).c $(FILE)/$(FILE).c
mv -v -u $(FILE).s $(FILE)/$(FILE).s

$shell(explorer.exe "G:/learn_C/$(FILE)");
$shell(cmd.exe /K $(FILE)/$(FILE).exe);


Amicalement,

Jean Pierre Daviau
--
windows Xp
asus p4 s533/333/133
Intel(R) Celeron (R) CPU 2.00 GHz
Processor Radeon7000 0x5159 agp

10 réponses

1 2 3
Avatar
AG
Pour les deux autres groupes (news://news.videotron.ca/gnu.gcc.help, etc)
ça va mais gnu.utils.help, il est sur quel serveur?
moi je suis chez orange. Sinon tu as toujours :


http://groups.google.fr/group/gnu.utils.help/topics?lnk=sg&hl=fr

sur google tu as beaucoup de groupes :

http://groups.google.fr/groups/dir?hl=fr&sel3554433

AG

Avatar
Jean Pierre Daviau
Avatar
Pierre Maurette
Bonjour à tous,


Bonjour à vous,

Quelques voies de recherche:

- Il existe plusieurs make. Sous XP, entr'autres, nmake de Microsoft,
make de Borland, et GNU make. Mêmes principe, parfois de syntaxes très
proches, mais incompatibles.

- L'effort d'apprentissage n'est pas négligeable. Disons que c'est à la
fois piquant et velu. Pour rentabiliser cet effort, il faut savoir
qu'un seul make est suffisant. Pour de nombreuses raisons, il est
préférable de choisir GNU make.

- Ce qui n'empêche pas d'utiliser ponctuellement un autre make, par
exemple pour exploiter un makefile fourni ou généré.

- Notons que Borland - où en sont-ils dans le domaine du compilateur et
de l'IDE ? - utilise parfois (C++BuilderX par exemple, multicompilateur
/ multiplateforme oblige) un GNU make, et ce presque furtivement.

- Le make de Microsoft a la bonne idée de se nommer nmake.exe. En
revanche celui de Borland, c'est make.exe.

- Si vous avez du Borland installé, vous avez certainement dans votre
PATH un chemin vers un ..borland..bin. Pour vérifier, tapez /make
-version/ dans une fenêtre "Invite de commandes".

- Je ne connais pas (plus) la syntaxe du make de Borland. Pour mkdir,
je ne sais pas trop. Mais rm n'est pas une commande sous XP. Donc je
suppose que votre makefile est pour GNU make.

- Il vous faut donc un GNU make, j'utilise au plus simple, un truc qui
s'appelle msys, dans la lignée de Mingw. Il y a d'autres paquetages du
même type. L'important, c'est que dans la même C:msys1.0bin (par
exemple) vous trouverez make.exe, mais aussi rm.exe et bien d'autres
trucs.

- Une fois msys copié sur votre disque, il faut faire en sorte que son
make.exe soit atteint avant celui de Borland. Personnellement, je ne
sais si c'est bien, j'utilise un .bat qui lance le make après avoir
nettoyé et fabriqué les variables d'environnement qui vont bien. En
fait, ce n'est pas très bien, c'est un peu bâtard...
Ça ressemble à ça (attention, c'est pour compiler du VC8 avec Eclipse):

@ECHO OFF

REM %1 est: x86 | ia64 | amd64 | x86_amd64 | x86_ia64
REM %2 est la target [all | clean]

REM Commenter la ligne suivante (SET PATH=) au besoin
SET PATH SET PATH=C:msys1.0bin;%PATH%

GOTO lbl_%2

:lbl_all
CALL "D:Program Files (x86)Microsoft Visual Studio
8VCvcvarsall.bat" %1

:lbl_clean
make %2

--
Pierre Maurette

Avatar
Jean Pierre Daviau
Merci monsieur.

"Pierre Maurette" a écrit dans le
message de news:
Bonjour à tous,


Bonjour à vous,

Quelques voies de recherche:

- Il existe plusieurs make. Sous XP, entr'autres, nmake de
Microsoft, make de Borland, et GNU make. Mêmes principe,
parfois de syntaxes très proches, mais incompatibles.

- L'effort d'apprentissage n'est pas négligeable. Disons que
c'est à la fois piquant et velu. Pour rentabiliser cet effort,
il faut savoir qu'un seul make est suffisant. Pour de
nombreuses raisons, il est préférable de choisir GNU make.

- Ce qui n'empêche pas d'utiliser ponctuellement un autre make,
par exemple pour exploiter un makefile fourni ou généré.

- Notons que Borland - où en sont-ils dans le domaine du
compilateur et de l'IDE ? - utilise parfois (C++BuilderX par
exemple, multicompilateur / multiplateforme oblige) un GNU
make, et ce presque furtivement.

- Le make de Microsoft a la bonne idée de se nommer nmake.exe.
En revanche celui de Borland, c'est make.exe.

- Si vous avez du Borland installé, vous avez certainement dans
votre PATH un chemin vers un ..borland..bin. Pour vérifier,
tapez /make -version/ dans une fenêtre "Invite de commandes".

- Je ne connais pas (plus) la syntaxe du make de Borland. Pour
mkdir, je ne sais pas trop. Mais rm n'est pas une commande sous
XP. Donc je suppose que votre makefile est pour GNU make.

- Il vous faut donc un GNU make, j'utilise au plus simple, un
truc qui s'appelle msys, dans la lignée de Mingw. Il y a
d'autres paquetages du même type. L'important, c'est que dans
la même C:msys1.0bin (par exemple) vous trouverez make.exe,
mais aussi rm.exe et bien d'autres trucs.

- Une fois msys copié sur votre disque, il faut faire en sorte
que son make.exe soit atteint avant celui de Borland.
Personnellement, je ne sais si c'est bien, j'utilise un .bat
qui lance le make après avoir nettoyé et fabriqué les variables
d'environnement qui vont bien. En fait, ce n'est pas très bien,
c'est un peu bâtard...
Ça ressemble à ça (attention, c'est pour compiler du VC8 avec
Eclipse):

@ECHO OFF

REM %1 est: x86 | ia64 | amd64 | x86_amd64 | x86_ia64
REM %2 est la target [all | clean]

REM Commenter la ligne suivante (SET PATH=) au besoin
SET PATH > SET PATH=C:msys1.0bin;%PATH%

GOTO lbl_%2

:lbl_all
CALL "D:Program Files (x86)Microsoft Visual Studio
8VCvcvarsall.bat" %1

:lbl_clean
make %2

--
Pierre Maurette





Avatar
Antoine Leca
En news:f9f5v6$7dt$, AG va escriure:
chez moi, dans un fichier Makefile je tape :

all:
mkdir $(FILE)


Rajoute un - devant mkdir, cela permettra à make de continuer à construire,
même si mkdir renvoit une erreur (au hasard, si le répertoire existe
déjà...)


all:
mkdir $(FILE); mv -v -u $(FILE).exe $(FILE)/$(FILE).exe


Là c'est du dialecte *nix. Make passe les lignes entières à l'interpréteur
de commandes, et avec *nix « ; » permet d'écrire plusieurs instructions en
une seule ligne.
Il vaut donc mieux écrire dans le style
all:
-mkdir $(FILE)
mv -v -u $(FILE).exe $(FILE)/$(FILE).exe

Autre souci, mv aussi est une exclusivité *nix, et ni -u ni -v ne font
partie des options standards de cette commande (-v est présent sur les *nix
récents, à l'exception par exemple de OpenBSD4 ; -u est du pur GNU).


Antoine

Avatar
Antoine Leca
En news:, Pierre Maurette va escriure:
- Je ne connais pas (plus) la syntaxe du make de Borland. Pour mkdir,
je ne sais pas trop. Mais rm n'est pas une commande sous XP. Donc je
suppose que votre makefile est pour GNU make.


C'est indépendant. Make ne fait rien d'autre que passer les lignes de
commandes (via un bête system()) à l'interpréteur de commandes du système.
Donc n'importe quel make (BSD, Borland, MS, GNU ou MKS) va passer la
commande commençant par rm à l'interpréteur (normalement COMMAND.COM, ou
bien CMD.EXE le système est bien configuré, ou même ${SHELL}), lequel va
donc chercher un rm.{com,exe,bat,cmd,vbs,je-sais-je} sur le chemin.

S'il n'y en pas (cas d'un XP normal venant de chez Dell ou HP), il faut donc
avoir installé un paquetage de développement contenant une telle commande,
c'est-à-dire OpenNT=Interix=SFU=SUA ou MKS ou un portage GNU (Cygwin,
GnuWin32 ou Msys). Je crois que VC++1 avait aussi une telle commande, et
aussi qu'elles étaient dans un coin du kit de ressources.

Mais c'est complètement indépendant de la version de Make utilisée. Celle-ci
n'a d'importance que pour interpréter correctement la syntaxe du fichier
Makefile. Dans le cas de Jean-Pierre, il était clair que la syntaxe du
premier message visait le make GNU (« fonction » $shell), et le deuxième
message visait le make de Borland (.autodepend et autres sucreries).


Tout cela pour dire que le résultat dépend passablement de la plateforme.


Antoine

Avatar
Jean Pierre Daviau
$ bash -v
# base-files version 3.7-1


version gcc 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)

$ make -v
make -v
GNU Make 3.81
Avatar
Jean Pierre Daviau
C:Documents and SettingsJean PierreBureau>mingw32-make.exe -v
GNU Make 3.81
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR
A
PARTICULAR PURPOSE.
Avatar
Jean Pierre Daviau
J'ai placé make en début de patrh et tout est rentré dans
l'ordre.

Maintenant, d'un esprit serein, j'aborderai l'épineux duvet de
make.
Avatar
Jean Pierre Daviau
"Jean Pierre Daviau" a écrit dans le message de
news: rGBui.5$


répondre à des pète-couille de mon espèce ;)


Pardon pète-couilles

selon la norme P259-260 (Grevisse)

ou
des pètes-couilles
si le premier mot est un nom

norme-P 255



1 2 3