希望这是一个非常简单的问题。我有一个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’。
通常的技巧是添加一个“虚拟”目标作为第一个目标,该目标取决于您在运行纯文本时要构建的所有目标make:
make
all: radgrd_py.so lodiso_py.so
习惯上将此目标称为“全部”或“默认”。为了获得更多的正确性,make请将以下代码行添加到您的文件中,以使其不是真实文件Makefile:
Makefile
.PHONY: all