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 else LIBS = -lm -lMst_main -lAMR_Reject_DSP -lF

トークンはヘッダーファイルにあり、メイクファイルにはないため、これは明らかに機能しません。助言がありますか ?ありがとうございました !

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 に答える