Je suis en train de compiler le code source deux fois avec un MACRO défini & non défini. Ainsi, par défaut, la macro est pas défini & je veux définir cette macro par des arguments de Makefile, commecomment une définition de macro est passée de Makefile à un fichier d'en-tête?
$(MAKE) -c $(present_dir)/new_dir -DONE_MACRO=1
donc je me sers de ce ONE_MACRO
dans file.h
. comment cette définition est reflétée et sait au préprocesseur. Ici, j'utilise cygmake
. Comment passer un MACRO as argument to compiler
avec l'outil cygmake.
fichier.h: -
#if ONE_MACRO
#define some_targets
#else
#define other_targets
#endif
Alors, comment cette ONE_MACRO est défini à partir du fichier make, im essayant de passer macro comme argument comme ci-dessous
Makefile: -
MY_TARGET:
$(MAKE) -C $(present_dir)/target_dir -D ONE_MACRO=1 $(MAKECMDGOALS)
Votre question n'est pas claire. [This] (http://www.cplusplus.com/doc/tutorial/preprocessor/) montre comment utiliser '# ifdef' dans' file.h'. Est-ce que ça répond à votre question? – Beta
On ne sait pas ce que vous demandez. Le compilateur traite l'argument '-D MACRO_DEFINE = 1' (écrit classiquement sans l'espace entre la lettre d'option' D' et la valeur 'MACRO_DEFINE = 1') comme s'il y avait une ligne de code qui lisait' #define MACRO_DEFINE 1' . Ceci est défini avant que tout le code réel est traité. C'est simple, alors ce n'est probablement pas ce que vous demandez, mais ce que vous demandez n'est pas clair. –
Je veux passer une ** macro au compilateur de Makefile comme un argument **, cette macro utilise dans 'file.h'.so pendant la compilation je vais compiler le' file.h' ** deux fois basé sur la macro comme défini et indéfini **. Je pense que c'est clair maintenant. – Kumar2080