[gull] Makefile / cmake / interpretation de commande au link

Marc SCHAEFER schaefer at alphanet.ch
Wed Jan 3 15:02:10 CET 2007


On Wed, Jan 03, 2007 at 10:58:59AM +0100, B. Carrupt wrote:
> J'utilise cmake pour compiler en C++ mes projets sur une Fedora core 1 et j'ai un souci avec le link lorsque j'utilise wxWindows.

Dans de tels cas, il manque en général pas mal d'informations
(background) pour éviter d'avoir des dizaines de mails fragmentaires :->

Je ne crois pas avoir utilisé cmake. Je suppose que cet outil *génère*
des fichiers Makefile, selon la plateforme (un peu comme imake,
automake, et autres?).

Ces fichiers sont ensuite lus par la commande usuelle `make'.

Si oui, il nous faudrait un extrait du Makefile concerné. Quitte à
déposer le Makefile entier sur un serveur HTTP ou FTP et donner l'URL
ici-même.

> J'ai essaye de supprimer les parametres de la commande `wx-config`, mais j'ai toujours le meme probleme, ce coup-ci avec l'accent ferme :

make ne supporte pas, à ma connaissance, l'expansion via les backticks
(`). Du moins pas GNU make.

Si je lis le manuel (info make), je trouve (section 8.11):

      The `shell' function performs the same function that backquotes
      (``') perform in most shells: it does "command expansion".  This means
      that it takes as an argument a shell command and evaluates to the
      output of the command.  The only processing `make' does on the result
      is to convert each newline (or carriage-return / newline pair) to a
      single space.  If there is a trailing (carriage-return and) newline it
      will simply be removed.

Donc, si dans le fichier Makefile généré par cmake il y a une ligne du
genre:

   WXCONFIG=`wx-config`

elle devrait être changée en:

   WXCONFIG=$(shell wx-config)

Une alternative serait d'utiliser une autre version de make, qui
supporterait peut-être cette syntaxe.

En général, ce genre de programme retourne un chemin (p.ex. le chemin
aux bibliothèques, etc).

> J'ai ensuite supprime tout ce qui touche `wx-config` dans le link et ca ne me donne plus d'erreur. Mais evidemment cmake me regenere les fichiers avec `wx-config`. Et j'en aurai surement besoin plus loin.
> 
> Une suggestion ?

Il n'est jamais interdit de lancer ses outils dans un Makefile de plus
haut niveau, comme p.ex.:

   all: application
   
   application: Makefile
   
   Makefile:
   	cmake
   	patch < $(PATCHES)/fix-incorrect-wx-config-call
   
   clean:
   	make clean
   	rm -f Makefile

Mais bien sûr, peut-être que le problème est dû à un bug dans la
distribution; consulter le système de bug-reporting pour p.ex. le
package cmake; chercher sur Google, etc; pour éviter d'appliquer
un work-around à un problème connu, voire déjà résolu.




More information about the gull mailing list