먼저이 문제를 해결할 수있는 방법이 많아서 제목이 매우 일반적입니다. 그러나, 나는 깨끗한과 깔끔한 방법을 찾고 있어요.Makefile : expand dependencies
상황 :
I가 동일한 두 객체 파일 위치 독립적 (-fPIC
컴파일)는 후자의 foo.o
및 foo-pi.o
을 갖는다. 둘 다 foo.h
과 bar.h
에 의존합니다.
문제점 :
코드 중복없이 foo*.o
에서 bar.h
으로 종속성을 선언하려면 어떻게해야합니까?
솔루션 지금까지 :
$(shell bash -c 'echo -ne foo{-pi,}.o'): bar.h
$(addsuffix .o, $(addprefix fo, o-pi o)): bar.h
foo.o foo-pi.o: bar.h
첫 번째 솔루션은 bash
를 지원하지 않는 시스템에없는 이식, 두 번째는 내가 알아낼 방법 수 없기 때문에 더러운 솔루션입니다 addprefix
에 빈 문자열을 사용하십시오. 세 번째 해결책은 내가 피하고 싶은 foo
의 중복 된 언급을 포함합니다.
PIC와 비 PIC 코드를 구별하기 위해 이름 바꾸기를 사용하는 대신 두 가지 유형의 객체를 다른 하위 디렉토리 (예 :'obj /'및'obj.PIC /')에 넣고 이름을 동일하게 두는 것을 고려하십시오. 그건 당신이 쉽게하려고하는 것을 많이 만들 수 있습니다 ... – twalberg
사실,하지만 사양은 그것을 허용하지 않습니다. – Danyel