2017-11-21 5 views
1

가 여기 내 메이크 알고하기 그건 (객체와 소스와 같은) 컴파일 할 때가 아니고, 원형 규칙에 대해서만 논쟁을하고 어쨌든 내 라이브러리를 컴파일하면됩니다.어떻게

그렇다면 작성해야 할 내용은 내 라이브러리가 아직 컴파일되지 않은 경우에만 $(LIB_PATH):에 입력해야합니다.

+0

'mylib.a : $ (OBJECTS)'와 (과) 비슷한 것이 없습니까? (또는 mylib의 절대 경로를 지정하십시오.) –

답변

0

이것은 계층 적 메이크 파일의 일반적인 문제입니다. 라이브러리 종속성을 두 번 지정할 필요가 없습니다 (즉, sub-makefile을 시작할시기를 알기 위해 한 번, 실제로 대상을 빌드하기 위해 sub-makefile에서 다시 한 번). 그러면 sub-makefile 매번 재 구축이 필요한지 여부를 결정할 수 있도록합니다.

시도 :이 메이크업은 $ (LIB_PATH) 디렉토리에이 메이크 $ (LIB_PATH)에 따라 대상을 평가 할 때마다 실행하게한다

.PHONY: $(LIB_PATH) 
$(LIB_PATH): 
[tab] $(MAKE) -C $(LIB_PATH) --no-print-directory 

.

.PHONY은 실제로 파일을 나타내지 않는 대상 (예 : clean)을 대상으로합니다. 파일 이름에 새 파일이 있어도 대상을 '부실'로 표시합니다.

+0

나는 당신의 해결책을 시도해 왔지만 그것이 작동하게 만들 수 없으며, 순환 규칙을 계속 말합니다. – latiagertrutis

+0

위의'$ (LIB_PATH) : $ (LIBPATH)'규칙을 아직 사용하지 않았는지 확인하십시오. 내 것은 그것을 대체하기위한 것이었다. – lockcmpxchg8b