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)