Et si jamais il y a d'autres flags à rajouter ça peut poser marcher chez soi mais pas chez d'autres juste pour ce fichier…
Donc au final avec les makefiles de base on a les deux possibilités :
utiliser des règles par défaut qui sont communes pour tout le monde
et/ou surcharger pour certains fichiers mais en prenant le risque d'avoir justement des différences avec le reste
Une première alternative serait de définir deux extensions différentes ".oxx" (ou ".opp") et ".o", et avoir 3 règles génériques :
.c -> .o (avec CC, normal)
.cpp -> .oxx (avec CXX, normal)
.c -> .oxx (avec CXX, ce qui est demandé ici)
la quatrième règle .cpp -> .o n'est normalement pas possible, donc le mieux est de ne pas la définir pour forcer les développeurs à renommer le .cpp en .c si c'est bien du C
Ensuite dans le makefile on peut indiquer facilement si on veut utiliser CC ou CXX grâce à l'extension ".o" ou ".oxx" quand on mentionne les dépendances.
Une autre possibilité serait d'avoir des macros pour compiler avec CC ou avec CXX, mais c'est beaucoup moins élégant.
Tout ça demande des modifications des Makefiles pour un cas quand même assez rare.
Make est assez bas niveau pour que quasiment tout soit possible (au prix d'un effort plus ou moins important).
[^] # Re: g++ -c stubs.c : ça marche !
Posté par Damien Thébault . En réponse au journal compiler en c++ pour avoir plus de warnings. Évalué à 3.
Sauf que si c'est possible:
Le problème c'est qu'il ne faut pas oublier de rajouter les différents flags, donc au minimum ça donnerait ça:
Et si jamais il y a d'autres flags à rajouter ça peut poser marcher chez soi mais pas chez d'autres juste pour ce fichier…
Donc au final avec les makefiles de base on a les deux possibilités :
Une première alternative serait de définir deux extensions différentes ".oxx" (ou ".opp") et ".o", et avoir 3 règles génériques :
Ensuite dans le makefile on peut indiquer facilement si on veut utiliser CC ou CXX grâce à l'extension ".o" ou ".oxx" quand on mentionne les dépendances.
Une autre possibilité serait d'avoir des macros pour compiler avec CC ou avec CXX, mais c'est beaucoup moins élégant.
Tout ça demande des modifications des Makefiles pour un cas quand même assez rare.
Make est assez bas niveau pour que quasiment tout soit possible (au prix d'un effort plus ou moins important).