我在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中。有什么建议 ?谢谢 !
答案 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