makefile中的条件语句

时间:2013-02-06 15:27:16

标签: makefile conditional

我在C ++代码_2G_MYSQL_中定义了一个指令,它在定义时包含其他mysql文件。 并且我只想在代码中定义此标记时才使用特定库。有没有办法在Makefile中这样做。

之类的,

ifdef _2G_MYSQL_ LIBS = -lstdc ++ -lmysqlclient -lz -lcrypt -lnsl -lssl -lcrypto -ldl -lm -lMst_main -lAMR_Reject_DSP -lFalseReject -lMStream_setting 其他 LIBS = -lm -lMst_main -lAMR_Reject_DSP -lFalseReject -lMStream_setting ENDIF

这显然不起作用,因为令牌位于头文件中,而不是在makefile中。有什么建议 ?谢谢 !

1 个答案:

答案 0 :(得分:0)

如果您使用gcc(和通常的文字工具),您可以通过以下方式进行:

 SYMBOL=_2G_MYSQL_
 MAINFILE=myfile.c

 CHECK=$(shell gcc -E -dD $(MAINFILE) | grep $(SYMBOL))

 ifeq ($(findstring define $(SYMBOL), $(CHECK)),define $(SYMBOL))
     LIBS=-lstdc++ -lmysqlclient ....
 else
      LIBS=-lm -lMst_main ...
 endif