0

我在 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

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

4

1 回答 1

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
于 2013-02-06T17:03:46.650 回答