在询问之前,我看到了这个,并尝试过但没有帮助:基于变量的条件编译
在我的情况下,我的src_file.c
包含:
#ifndef WITH_ATS
#define WITH_ATS
#include "ats.h"
#endif
并且Makefile包含:
ifdef WITH_ATS
INCLUDEDIR += -I../at2_build/include/
LDFLAGS += -L$(AT2) -lat2 -Wl,-rpath=$(AT2)
CFLAGS += -DWITH_ATS
endif
我尝试的是,如果我执行
make WITH_ATS=1
,文件应该编译并链接到已编译的ats
库,
而如果我执行make WITH_ATS=0
,则应该在没有ats
库的情况下进行编译。任何帮助将不胜感激。
Makefile
中不要使用条件编译,只在C源文件中使用。你可能会为make
生成依赖关系,但那是一个非常不同的问题。 - Basile Starynkevitchifdef
,不如考虑使用可移植的Makefile结构和习惯用法,正如A tutorial on portable Makefiles所解释的那样。 - imhotap