appel d'un mauvais compilateur avec make

erreur lors de l'écriture de makefile

Le problème exposé dans ce sujet a été résolu.

Le Makefile n’a pas nécessairement besoin de contenir grand chose, il pourrait par exemple ne contenir que les options de compilation.

Si on imagine un projet d’un seul fichier toto.c, tu peux déjà le compiler sans aucun Makefile à l’aide de make toto.

Mais tu peux aussi créer un Makefile pour définir des CLFAGS par exemple, ce n’est pas vraiment ce que j’appelle s’embêter.

Y’a déjà tous les arguments dans ce thread mais de bonne grâce :

  • Make et les makefiles sont une plaie à écrire (tabulation, variables cryptiques), maintenir, dépourvu d’outils haut niveau et plutôt orienté unixoïde.
  • cmake est le standard de facto pour le C++. Il permet de supporter nativement plusieurs système de build différents (make, ninja, XCode, VS,…) sur des OS différents (linux, MacOS, Windows).
  • Il permet d’avoir gratuitement une compilation en dehors des sources, de mème que différents jeu de compilation (release, debug, debug optimise).
  • Avec une écriture moderne des cmake a base de target, on aussi la propagation automatique des dépendances (flags, bibliotheques,…) entre les différentes targets d’un projet.
  • Les mécanismes automatiques pour trouver les paquets et bibliotheque, l’integration avec conan….

Bref : Je le redis mais make est l’assembleur du système de build sous Linux.

+1 -0

Y’a déjà tous les arguments dans ce thread mais de bonne grâce :

  • Make et les makefiles sont une plaie à écrire (tabulation, variables cryptiques), maintenir, dépourvu d’outils haut niveau et plutôt orienté unixoïde.
  • cmake est le standard de facto pour le C++. Il permet de supporter nativement plusieurs système de build différents (make, ninja, XCode, VS,…) sur des OS différents (linux, MacOS, Windows).
  • Il permet d’avoir gratuitement une compilation en dehors des sources, de mème que différents jeu de compilation (release, debug, debug optimise).
  • Avec une écriture moderne des cmake a base de target, on aussi la propagation automatique des dépendances (flags, bibliotheques,…) entre les différentes targets d’un projet.
  • Les mécanismes automatiques pour trouver les paquets et bibliotheque, l’integration avec conan….

Bref : Je le redis mais make est l’assembleur du système de build sous Linux.

Davidbrcz

Mais là encore une fois tu confonds le build de sources et le build de projet dans tes arguments.

Pour la partie cryptique, je préfèrerai typiquement Meson à Cmake, qui n’a pas plus de relisibilité qu’un makefile IHMO.

Nan mais si tu n’as qu’un seul fichier sans subtilité particulière alors un simple appel a g++/clang++ suffit. C’est ce que j’utilise quand je veux tester un point du langage.

Dans tous les autres cas (au moins 2 fichiers, bibliothèques a intégrer …) c’est un projet et avoir un outil plus haut niveau est justifié.

+2 -0

Nan mais si tu n’as qu’un seul fichier sans subtilité particulière alors un simple appel a g++/clang++ suffit. C’est ce que j’utilise quand je veux tester un point du langage.

Davidbrcz

Ben comme je disais plus haut, le Makefile permet dans ce cas en une ligne de préciser les options de compilation, ce qui est assez pratique. Plus que de créer un script shell avec la ligne de compilation par exemple.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte