Est-il possible de mettre l'équivalent de #define VAR
(dans un programme C) dans un makefile, afin que l'on puisse contrôler quelle partie du programme doit être compilée?
Conformément à cc
page de manuel sur linux
-D name=definition
The contents of definition are tokenized and processed as if they appeared during translation phase three in a #define directive. In
particular, the definition will be truncated by embedded newline characters.
Modifiez votre Makefile
pour afficher
CFLAGS = -D VAR1 -D VAR2= * quelque chose *
Si vous utilisez des règles par défaut dans le Makefile, cela devrait fonctionner automatiquement. Si vous ne le faites pas et que vous invoquez explicitement le compilateur C, assurez-vous simplement que vous écrivez quelque chose dans le sens de
$ (CC) $ (CFLAGS) -c -o $ @ $ <
Encore plus mignon si le fait que CFLAGS=...
Ci-dessus peut être utilisé sur la ligne de commande plutôt qu'écrit dans le Makefile (lire la page de manuel man(1)
); cela permet de reconfigurer facilement vos paramètres de compilation au dernier moment, mais les paramètres ne seront pas conservés.
Les meilleures pratiques incluent l'utilisation de CPPFLAGS
au lieu de CFLAGS
et l'utilisation de +=
Au lieu de =
; cependant, la prise en charge de ces fonctionnalités n'est pas aussi universelle que ci-dessus et dépend de votre système de fabrication.
Oui.
La plupart des compilateurs prennent en charge les options de ligne de commande pour spécifier # define's. Pour Visual C++, il s'agit de option/D .