具有多个目标的Makefile

Kaz*_*789 6 linux shell makefile

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

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

我希望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
Run Code Online (Sandbox Code Playgroud)

然后尝试了这个:

radgrd_py.so:

lodiso_py.so:

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

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

sch*_*hot 13

通常的技巧是添加一个"虚拟"目标作为第一个依赖于运行普通平台时要构建的所有目标的目标make:

all: radgrd_py.so lodiso_py.so
Run Code Online (Sandbox Code Playgroud)

将此目标称为"全部"或"默认"是一种惯例.为了获得额外的正确性,请make通过在以下位置添加以下内容来了解​​这不是真正的文件Makefile:

.PHONY: all
Run Code Online (Sandbox Code Playgroud)