2011-12-11 2 views
1

오늘 --debug = v로 프로젝트를 만들었을 때, 나는 그것이 무엇을 의미하는지 정말로 이해하지 못하는 것을 발견했습니다.은 makefile을 포함하고, (검색 경로) (확장하지 않음)은 무엇을 의미합니까?

오른쪽에 "하위 메이크 파일"이있는 곳에서 이상한 출력물이 나와 (검색 경로) (확장 없음) ...이게 무슨 뜻입니까?

인쇄물은 다음과 같습니다

TEST := test01 
include $(TEST)/make.mk 

그리고 포함 메이크는 다음과 같이 수 :

Reading makefiles... 
Reading makefile `Makefile'... 
Reading makefile `make_pc.mk' (search path) (no ~ expansion)... 
Reading makefile `print_ring/make.mk' (search path) (no ~ expansion)... 
Reading makefile `vendor/unity/make.mk' (search path) (no ~ expansion)... 
Reading makefile `test01/make.mk' (search path) (no ~ expansion)... 
가 사용하는 주요 메이크의 행이 같은 모습을 포함

CFLAGS += -Itest01/ 
OBJ += test_main.o 
test_main.o: test01/test_main.c 
    @ echo ".compiling" 
    $(CC) $(CFLAGS) -o [email protected] $< 

검색 경로를 사용하여 게임하는 더 좋은 방법이 있습니까? 하지만 내 유닉스 사용자 홈 디렉토리로 확장 할까?

참고 : 저는 Linux (Ubuntu) 시스템에서이 작업을 수행하고 있습니다.

참고 : 모든 파일은 github project에서 찾을 수 있습니다.

/감사

답변

3

정말 추적을위한 특정 용도의 문서화되어 있지 않은 경우 너무 놀라운 일이 아니다 그래서이 정보의 일부는, 사람들이 자신을 확인 디버깅하기보다는 자신의 프로젝트의 빌드 인프라를 디버깅 목표로하여 자신의 빌드 문제.

즉, GNU Make 소스 코드를 사용하여 몇 분을 소비함으로써 이러한 의미가 무엇인지 알 수 있습니다. (나는 oversummarizing하고있어)이 메이크 다른 메이크 내 include를 통해 발생했습니다와 -I 검색 경로를 찾기 위해 조사되어 있음을 의미 만들기의 내부 RM_INCLUDED 플래그입니다

(검색 경로).

(더 ~ 확장)는 내부 RM_NO_TILDE 플래그없고 메이크업의 read.c이 코멘트에 설명되어 있습니다 :

/* Expand ~ in FILENAME unless it came from `include', 
    in which case it was already done. */ 

GNU 제조사가 실제로 expand ~ to home directories을 수행하고,이 플래그는 발생하지 그것을 중지 두 번 - 나는 아주 특별한 파일 시스템 레이아웃을 만들 수 있다고 생각한다.

관련 문제