나는 당신이 여기하려는 것은 "VPATH 남용"의 범주에 해당 생각합니다.
내 경험이 반복 만트라 "명시 적 암시보다 낫다"이는 이유 중 하나입니다으로 나를 가리키고 있습니다. 수동 구성하는 GNU의 주장과는 달리, 내 경험은 크기가하지 않는 한 더 어렵게, 파일을 찾을 수 있기 때문에 더 크고 복잡한 프로젝트에서, 당신은 더 명시 적, 이하를 할 필요가 있다고 생각하는 저를 주도하고있다 그들의 경로는 명시 적입니다.
는 또한 VPATH를 사용할 필요 많은 당신이 완료 의존성 트리를 구축하지 않는 재귀 메이크업의 사용에서 비롯된 것을 믿는다 빌드 시스템을 올바르게 작성하면 VPATH가 전혀 필요하지 않습니다. 최상위 레벨 src/
및 include/
디렉토리를하고 이러한 경로를 기준으로 모든 inclussions합니다 관련 주제에
, 나는 하나 또는 두 개의
-I
디렉토리를 지정하는 확고한 신자입니다. 다시 말하면, 더 크고 복잡한 프로젝트의 경우
#include "my/really/cool/thing.h"
은 단순히
#include "thing.h"
보다 훨씬 유익합니다.
즉, -lfoo
구문을 사용할 수 있기 때문에 라이브러리, 특히 시스템 라이브러리에 VPATH를 사용한다는 아이디어에 대해 열려 있지만, 일반적으로이 구문을 사용하면 빌드를 위협 할 수 있으므로 사용하지 않을 것입니다. 재현성.
왜'foo'를 의존성으로 제거하지 않고'$ <'를'../ source/foo'로 바꾸지 않습니까? 나는 당신이'foo'에서'../ source/foo'로 의존성을 바꿀 수 있고'VPATH' 형을 제거 할 수 있었다고 생각합니다. –
의존성을'.. ../ source/foo' 그리고'VPATH'를 없애는 것은 효과가있는 것처럼 보이지만, 그것은'VPATH'에 의존하는'Makefile'에서 다른 것을 수정해야한다는 것을 의미합니다. 나는 그것을 피하기를 바랬지 만 너무 많은 일이 아닙니다. – Anthony