2014-11-03 3 views
0

비 명백하다 :메이크업 동작은

대상`venv/lib 디렉토리/python2.7/사이트 패키지를 만들 수 없음 규칙 /planar_growth/node_degree_tracker.so

왜 그런지 알 수 없습니다. $(DST_DIR)/%.so 대상이 DST_DIR의 모든 .so 파일과 일치하고 SRC_DIR에서 복사 할 것으로 기대합니다. 왜 이런 일이 일어나지 않습니까?

SRC_DIR := ./src/spg 
DST_DIR := ./venv/lib/python2.7/site-packages/planar_growth 
SRC_FILES := node_degree_tracker spatialgrowth splay data_structures 
DST_FILES_CYTHON = $(patsubst %,$(DST_DIR)/%.so,$(SRC_FILES)) 

$(DST_DIR): 
    virtualenv --system-site-packages venv 
    mkdir $(DST_DIR) 

$(DST_DIR)/%.py: $(SRC_DIR)/%.py $(DST_DIR) 
    cp $< [email protected] 

compile: 
    cd ./src/spg && \ 
    python setup.py build_ext --inplace 

.PHONY: $(SRC_DIR)/%.so 
$(SRC_DIR)/%.so: compile 

$(DST_DIR)/%.so: $(SRC_DIR)/%.so $(DST_DIR) 
    cp $< [email protected] 

all: $(DST_FILES_CYTHON) 
    cp $(SRC_DIR)/simulate_spg.py $(DST_DIR)/. 

는 ETAN의 요청에 따라 -d합니다

Updating goal targets.... 
Considering target file `all'. 
File `all' does not exist. 
    Considering target file `venv/lib/python2.7/site-packages/planar_growth/node_degree_tracker.so'. 
    File `venv/lib/python2.7/site-packages/planar_growth/node_degree_tracker.so' does not exist. 
    Looking for an implicit rule for `venv/lib/python2.7/site-packages/planar_growth/node_degree_tracker.so'. 
    Trying pattern rule with stem `node_degree_tracker'. 
    Trying implicit prerequisite `src/spg/node_degree_tracker.so'. 
    Trying pattern rule with stem `node_degree_tracker.so'. 
    Trying implicit prerequisite `venv/lib/python2.7/site-packages/planar_growth/node_degree_tracker.so,v'. 
    Trying pattern rule with stem `node_degree_tracker.so'. 
    Trying implicit prerequisite `venv/lib/python2.7/site-packages/planar_growth/RCS/node_degree_tracker.so,v'. 
    Trying pattern rule with stem `node_degree_tracker.so'. 
    Trying implicit prerequisite `venv/lib/python2.7/site-packages/planar_growth/RCS/node_degree_tracker.so'. 
    Trying pattern rule with stem `node_degree_tracker.so'. 
    Trying implicit prerequisite `venv/lib/python2.7/site-packages/planar_growth/s.node_degree_tracker.so'. 
    Trying pattern rule with stem `node_degree_tracker.so'. 
    Trying implicit prerequisite `venv/lib/python2.7/site-packages/planar_growth/SCCS/s.node_degree_tracker.so'. 
    Trying pattern rule with stem `node_degree_tracker'. 
    Trying implicit prerequisite `src/spg/node_degree_tracker.so'. 
    Looking for a rule with intermediate file `src/spg/node_degree_tracker.so'. 
    Avoiding implicit rule recursion. 
    Trying pattern rule with stem `node_degree_tracker.so'. 
    Trying implicit prerequisite `src/spg/node_degree_tracker.so,v'. 
    Trying pattern rule with stem `node_degree_tracker.so'. 
    Trying implicit prerequisite `src/spg/RCS/node_degree_tracker.so,v'. 
    Trying pattern rule with stem `node_degree_tracker.so'. 
    Trying implicit prerequisite `src/spg/RCS/node_degree_tracker.so'. 
    Trying pattern rule with stem `node_degree_tracker.so'. 
    Trying implicit prerequisite `src/spg/s.node_degree_tracker.so'. 
    Trying pattern rule with stem `node_degree_tracker.so'. 
    Trying implicit prerequisite `src/spg/SCCS/s.node_degree_tracker.so'. 
    No implicit rule found for `venv/lib/python2.7/site-packages/planar_growth/node_degree_tracker.so'. 
    Finished prerequisites of target file `venv/lib/python2.7/site-packages/planar_growth/node_degree_tracker.so'. 
    Must remake target `venv/lib/python2.7/site-packages/planar_growth/node_degree_tracker.so'. 
make: *** No rule to make target `venv/lib/python2.7/site-packages/planar_growth/node_degree_tracker.so', needed by `all'. Stop. 
+0

는'-d' 수 있도록 출력을 포함

그래서 그것을 다음과 같이 아무것도하지 않는 조리법을 제공합니다. –

답변

0

문제는 여기에 있습니다 :

$(SRC_DIR)/%.so: compile 

이 조리법이없는 패턴 규칙입니다. 지금은 참조를 찾을 수 없지만 적어도 Make의 특정 버전에서는 이것이 문제입니다.

$(SRC_DIR)/%.so: compile 
    @: 

나이 :

$(SRC_DIR)/%.so: compile; 
+1

레시피가없는 패턴 규칙은 그 자체로 문제가되지 않습니다. 문서화 된 동작이 다소 예기치 않은 경우 일뿐입니다. 래서 피없이 패턴 규칙 _ 패턴 _을 삭제합니다. 이것은 패턴 규칙이 추가 되었기 때문에 모든 버전의 GNU make에서 사실입니다. – MadScientist

+0

@MadScientist : 나는 그것을 막연하게 기억할 수는 있지만 매뉴얼에서 찾을 수는 없다. 너는 대답해야하고, 나는 내 것을 지울거야. – Beta

+0

@ Beta이 문제를 해결합니다. 감사합니다. – lovelyzoo