一尘不染

具有多个目标的Makefile

linux

希望这是一个非常简单的问题。我有一个makefile模式规则,如下所示:

%.so : %.f %.pyf
    f2py -c -L${LAPACK_DIR} ${GRASPLIBS} -m $* $^ ${SOURCES} --opt='-02' --f77flags='-fcray-pointer' >> silent.txt

我希望makefile生成许多.so文件,因此我尝试通过执行以下操作来使其生成两个文件(radgrd_py.so和lodiso_py.so):

radgrd_py.so lodiso_py.so:

%.so : %.f %.pyf
f2py -c -L${LAPACK_DIR} ${GRASPLIBS} -m $* $^ ${SOURCES} --opt='-02' --f77flags='-fcray-pointer' >> silent.txt

然后尝试这个:

radgrd_py.so:

lodiso_py.so:

%.so : %.f %.pyf
f2py -c -L${LAPACK_DIR} ${GRASPLIBS} -m $* $^ ${SOURCES} --opt='-02' --f77flags='-fcray-pointer' >> silent.txt

但是在每种情况下,它只会构建我指定的第一个目标。如果我运行’make
radgrd_py.so’可以正常工作,我只是不确定如何指定需要构建的文件列表,这样我就可以运行’make’。


阅读 279

收藏
2020-06-07

共1个答案

一尘不染

通常的技巧是添加一个“虚拟”目标作为第一个目标,该目标取决于您在运行纯文本时要构建的所有目标make

all: radgrd_py.so lodiso_py.so

习惯上将此目标称为“全部”或“默认”。为了获得更多的正确性,make请将以下代码行添加到您的文件中,以使其不是真实文件Makefile

.PHONY: all
2020-06-07