내 프로젝트는 외부 공급 업체의 정적 라이브러리 libext.a
을 사용합니다. 라이브러리는 모든 프로젝트 개발자간에 공유되는 중앙 위치에 유지됩니다 (central/
). 라이브러리의 각 업데이트 된 릴리스에 따라 central/libext.a.1
, central/libext.a.2
, central/libext.a.3
,symlink check-symlink-times을 사용하지 않고 Makefile의 전제 조건
프로젝트의 Subversion 저장소는 라이브러리의 최신 버전을 가리키는 기호 링크 libext.a
을 포함합니다 (central
). 새 버전이 추가 될 때마다 링크가 변경되어 저장소에 커밋됩니다.
링크가 변경되고 작업 복사본이 업데이트 된 후 프로젝트를 다시 컴파일 할 때 make
은 링크 대상의 수정 시간을보고 링크 자체의 수정 시간 (libext.a
)이 아닌 것이 문제입니다. 따라서 컴파일 된 프로젝트에서 사용 된 라이브러리는 여전히 이전 버전입니다.
내가 GNU 링크의 대상 및 링크 자체 모두의 수정 시간에 make
보이게 버전 3.81 이후을 확인 에서 사용할 수있는 -L
/--check-symlink-times
플래그의 알고 있지만, 내 프로젝트는 버전 3.80, 및 업그레이드를 사용 많은 컴퓨터에서 컴파일이 지원되어야하기 때문에 매우 어려울 것입니다. 그 중 일부는 제어 할 수 없습니다.
make
의 이전 버전에서이 새 플래그의 동작을 에뮬레이션하는 가장 간단한 방법은 무엇입니까? make
을 실행하기 전에 실행해야하는 스크립트 나 명령 줄 옵션을 지정하지 않아도 특정 Makefile에 로컬로 구현할 수있는 스크립트를 선호합니다. 완전히 받아 들일 수는 없지만 그렇습니다.