场景:
考虑一个源目录,它有多个“.cpp”文件,用于创建静态库 考虑文件:XYZ.cpp& ABC.cpp(具体用于下面描述的条件)以及PQR.cpp,JKL.cpp等..,输出库名称是out.a
这里p(是一个环境变量),其值与q匹配,然后, out.a应该使用XYZ.cpp创建,否则应该使用ABC.cpp
创建Ex:即这样的事情
ifeq($p, q)
SRC = XYZ.cpp
else
SRC = ABC.cpp
endif
SRC += PQR.cpp \
JKL.cpp \
MNO.cpp
我怎么能在Makefile中做同样的优化?
提前感谢您的帮助......
答案 0 :(得分:1)
这几乎就是它。您只需要ifeq
之后的空格(以及p
周围的一些括号,以防您想使用长于一个字母的变量名称):
ifeq ($(p), q)
SRC = XYZ.cpp
else
SRC = ABC.cpp
endif
SRC += PQR.cpp \
JKL.cpp \
MNO.cpp
答案 1 :(得分: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)。