2012-07-16 2 views
3

나는 그것을 알고있다GNU make의 마지막 호출 이후 수정 된 소스 파일을 나열 하시겠습니까?

어떤 소스 파일이 변경되었는지에 따라 업데이트해야하는 파일을 자동으로 찾아 낸다. 또한 소스 파일이 아닌 다른 소스 파일이 다른 비 소스 파일에 종속되는 경우 자동으로 파일 갱신 순서를 자동 결정합니다.

결과적으로 몇 가지 소스 파일을 변경 한 다음 Make를 실행하면 모든 프로그램을 다시 컴파일 할 필요가 없습니다. 변경 한 소스 파일에 직접 또는 간접적으로 의존하는 비 소스 파일 만 갱신합니다.

이제 수정 된 소스를 나열하도록 Make에 요청할 수 있는지 알고 싶습니다.

+0

빌드를 만들 때 사용하는 수정 된 소스를 표시하려면 만드시겠습니까 ? 또는 마지막으로 Make를 실행 한 이후 수정 된 모든 소스 파일을 나열하는 새로운 대상을 원하십니까? – Beta

+0

새로운 목표가 더 바람직합니다 – Roy

답변

4

당신은 필수로 모든 소스를 사용하는 더미 파일이 필요합니다 현재 존재하는 모든 소스를 살펴 보는 것 :

WATCHED_SOURCES = $(wildcard *.c *.cc *.cpp *.whatever) 
mod_list: $(WATCHED_SOURCES) 
    @echo modified sources: $? 
    @touch [email protected] 
+0

고맙습니다 @ 베타. 이것은 나를 위해 일했다. – Roy

0

간편한 방법 중 하나는 -n 또는 --dry-run 또는 다른 몇 가지 선택 인 건조 실행 옵션을 사용하는 것입니다. 일부는 사용중인 구현에 따라 다릅니다. 이것은 실행될 경우 make가 무엇을 할 것인지를 알려주며, 과 같이 다시 컴파일 할 소스 파일을 보여줍니다.

모두가 man 페이지입니다. 당신은 별도의 변수로 소스 목록을 유지할 수 있습니다

mod_list: foo.c bar.cc baz.cpp 
    @echo modified sources: $? 
    @touch [email protected] 

:

WATCHED_SOURCES = foo.c bar.cc baz.cpp 
mod_list: $(WATCHED_SOURCES) 
    @echo modified sources: $? 
    @touch [email protected] 

또는 와일드 카드를 사용할