0

シナリオ :

スタティック ライブラリを作成する複数の「.cpp」ファイルを含むソース ディレクトリを検討してください: XYZ.cpp & ABC.cpp (以下で説明する条件に基づいて具体的に使用)、PQR.cpp、JKL.cpp などのファイルを検討してください。出力ライブラリ名は out.a

ここで、p (は環境変数) の値が q に一致する場合、out.a は XYZ.cpp を使用して作成する必要があります。そうでない場合は、ABC.cpp を使用して作成する必要があります。

例:つまり、このようなもの

ifeq($p, q)
SRC = XYZ.cpp
else
SRC = ABC.cpp
endif
SRC += PQR.cpp \
       JKL.cpp \
       MNO.cpp

Makefile で同じことを最適化するにはどうすればよいですか?

助けてくれてありがとう...

4

2 に答える 2

1

ほぼそのとおりです。, の後にスペースが必要です(および、1 文字より長い変数名を使用する場合に備えて、をifeq囲むいくつかの括弧):p

ifeq ($(p), q)
SRC = XYZ.cpp
else
SRC = ABC.cpp
endif
SRC += PQR.cpp \
       JKL.cpp \
       MNO.cpp
于 2013-10-07T19:21:31.257 に答える
0

Beta の答えはかなり正しいですが、別の方法として、構築された変数名を検討することもできます。私の意見では、これらはよりクリーンで読みやすい makefile につながります。例えば:

# if p is not set, default to "default"
p ?= default

q_SRC = XYZ.cpp
default_SRC = ABC.cpp

SRC = $($(p)_SRC) PQR.cpp JKL.cpp MNO.cpp

など。特に、多くの代替手段がある場合、これははるかに理解しやすくなります (やはり、IMO)。

于 2013-10-07T19:42:51.337 に答える