Недавно я столкнулся с крайне странным поведением Makefile
:
В текущем каталоге у меня есть hello.pyx
:
#cython: language_level=3
print("Hello, world!")
и в ..
у меня Makefile
:
includes=$(shell python3 -c "import sysconfig; print(sysconfig.get_path('include'))")
CFLAGS=-shared -pthread -fPIC -fwrapv -Oz -flto -Wall -fno-strict-aliasing -I$(includes)
LDFLAGS=-Wl,-plugin-opt=O2
%.cc: %.pyx
cython --cplus $< -o $@
%.so: %.cc
clang++ ${CFLAGS} ${LDFLAGS} $< -o $@
clean:
rm -f *.cc *.so
.PHONY: clean
Когда я строю hello.so
в текущем каталоге, используя make -f ../Makefile hello.so
, он удаляет .cc
после построения .so
:
cython --cplus hello.pyx -o hello.cc
clang++ -shared -pthread -fPIC -fwrapv -Oz -flto -Wall -fno-strict-aliasing -I/usr/include/python3.7m -Wl,-plugin-opt=O2 hello.cc -o hello.so
rm hello.cc
Я пытался удалить цель .PHONY
и clean
, но это не помогает.
Как мне остановить make
с rm hello.cc
?