gcc에서 생성 된 종속성 정보를 기반으로 make에서 etags 대상을 작성하려고합니다. 거기에 하나의 모든 의존성을 얻는 방법이 있습니까? 아니면 "태그"대상이 만들어지고 모든 소스 및 헤더 파일을 etags에 전달할 때만 실행되는 규칙을 작성하는 방법은 무엇입니까? 헤더 파일을 포함하여 실제로 컴파일 된 파일에 대해서만 색인을 생성하려고합니다. 나는 나 자신이 .d 파일에서 주위를 피할 수 있다는 것을 알고 있지만 좀 더 우아하고 덜 부서지기 쉬운 해결책을 찾으려고 노력 중이다.make에서 모든 의존성 목록 얻기
나는 다음 (발췌)
DEPFILES = $(OBJFILES:.o=.d)
%.o : %.c
@echo "Compiling $<"
$(NO_ECHO) $(CC) $(CFLAGS) -MMD -MF $(@:.o=.d) -o [email protected] -c $<
%.o : %.S
@echo "Compiling $<"
$(NO_ECHO) $(CC) $(ASFLAGS) -MMD -MF $(@:.o=.d) -o [email protected] -c $<
$(TARGET) : $(OBJFILES)
@echo "Linking [email protected]"
$(NO_ECHO) $(LD) $(LDFLAGS) -o [email protected] $(OBJFILES) $(LIBS:%=-l%)
.PHONY: clean
# Order-only dependency to make Dep/obj-directories if they are not
# present
$(OBJFILES) : | $(ALLPATHS)
$(ALLPATHS):
$(NO_ECHO) mkdir -p $(ALLPATHS)
# Depend on the makefiles
$(OBJFILES) : $(SRC_PATH)/Makefile $(MAKECFG) $(BUILDCFG)
# Include dependency files
sinclude $(DEPFILES)
편집이 : 다음은 작동하는 것 같다하지만 난 정말 더 우아한 해결책 을 (이중 종류/UNIQ 그냥 성능입니다) 찾을 싶습니다.
고양이와 가짜 타겟 변수의 쓸모없는 사용 :'sed stuff < $< > $ @'. – Jens
"something like"는 "very approximate"를 의미합니다. –
솔직히 말해서, "내가 쓴 것을 신경 쓰지 않고, 자신의 발췌 문장을 테스트하는 데 귀찮아서 고칠 수 없습니다. 중간에 끝나는 문장, 그래서? 나는 그것이 시험되지 않았다고 말했다. " – Jens