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

几乎就是这样。您只需要在 , 之后有一个空格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 的答案非常正确,但您也可以考虑构造变量名称。在我看来,它们会导致生成更清晰、更易读的生成文件。例如:

# 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 回答