다른 사람이 작성한 패키지가 있습니다. 해당 패키지의 파일을 변경할 수 없습니다. 해당 패키지에서이 같은 규칙을 Makefile을있다 : 나는 GNU 대신 .o 인 같은 파일 목록에서 이진의 라이브러리를 구축하는 메이크 주위에 "래퍼"를 만들어 쓰고 싶은GNU make : 다른 규칙의 전제 조건을 상속합니다
$(BIN)/progA: <long list of .o files>
$(LINK.cc) $^ -o [email protected]
. 이상적으로 나는 이런 식으로 뭔가를하고 싶습니다 : 물론
include package/Makefile
$(LIB)/progA.so: <magically copy the prerequisites for $(BIN)/progA>
$(LD) -shared $(LDFLAGS) $^ $(LIBS) -o [email protected]
, 난 그냥 내에 패키지의 메이크 파일에서 목록을 n은 붙여 넣기 - 복사 할 수 있지만, 패키지는 자주 업데이트됩니다; 내 빌드 프로세스가 자동으로 마술 파일의 패키지 변경 사항에 대한 변경 사항을 선택하는 경우 선호합니다.
내 유일한 해결책은 뭔가 복잡한 것입니다 : sed 또는 awk 또는 perl을 사용하여 패키지의 Makefile을 검사하고 .o 파일 목록을 꺼내 래퍼 작성 파일의 변수에 할당하십시오. 할 수만 있으면 그걸 피하고 싶습니다.
첫째, 같은 실행 뭔가 :
make -n bin/progA LINK.cc='OBJECTS:' | grep ^OBJECTS:
다음 출력을 캡처
패키지가 자주 업데이트되는 경우 기능 요청을 제출하여 개체 파일을 규칙에 하드 코딩하는 대신 OBJS 변수에 넣습니다. – Kaz
> * 다른 사람이 작성한 패키지가 있습니다. 해당 패키지의 파일을 변경할 수 없습니다. * 이 요구 사항은 현실적이지 않습니다. 자신의 컴퓨터와 파일 사본이 있으면 원하는대로 할 수 있습니다. 패치를 적용하고 자신 만의 지점을 유지 관리하는 저장소로 가져올 수 있습니다. – Kaz