2010-11-29 4 views

Répondre

4

Oui, vous l'êtes. Le système de construction est censé configurer le code, et non l'inverse. Vous devriez utiliser un script configure pour ce genre d'options (ou passer probablement à un système de compilation supérieur: autotools, CMake, QMake ...).

1

C'est possible, mais vous vous y trompez. La façon d'inclure différents répertoires est avec des cibles différentes. Si votre code doit les connaître, utilisez -D dans vos options de compilation. Alternativement, si votre build doit être capable de fonctionner sur les systèmes d'autres personnes, quelque chose comme autoconf est la voie à suivre.

4

Les autres réponses ont expliqué pourquoi c'est une mauvaise idée. Quoi qu'il en soit, d'une façon de le faire est par prétraiter un fragment makefile:

En foo.mk.in:

#ifdef FOO 
FOO_DEFINED := y 
#else 
FOO_DEFINED := n 
#endif 

En Makefile:

foo.mk: foo.mk.in 
    $(CPP) $(CPPFLAGS) -o [email protected] $< 
include foo.mk 
ifeq ($(FOO_DEFINED),y) 
$(warning FOO is defined) 
else 
$(warning FOO is not defined) 
endif 
+1

Bon travail. Il suffit de le faire. –

Questions connexes