2012-11-08 3 views
2

HD에 내 이름에 괄호가있는 폴더가 있습니다. 좋아요 : C:/stuff (really cool)/. make $(wildcard ..) 기능이이 디렉토리에서 제대로 작동하지 않습니다.메이크 파일 - 이스케이프 괄호

$(wildcard C:/stuff (really cool)/*.jpg)` 

전혀 결과가 없습니다. 이 사실은 디렉토리 이름의 닫는 괄호가 $(wildcard ..) 함수의 닫는 괄호로 취급된다는 사실에 기인합니다. ( 및 을 백 슬래시로 이스케이프해도 작동하지 않습니다. 또한 작동하지 않는 것은 directory-name을 변수에 넣은 다음 와일드 카드 기능을 사용하는 것입니다.

DIR = C:/stuff (really cool) 
all: 
    @echo "$(wildcard $(DIR)/*.jpg)" 

전혀 결과가 없습니다.

괄호를 어떻게 올바르게 벗어나야합니까? 다음은 작동하지 않습니다

+0

Windows의 경로 구분 기호는 백 슬래시입니다. 이와 같이 고대 툴링에서 슬래시가 작동한다고 가정하지 마십시오. –

+0

심볼릭 링크로 매듭을자를 수 있습니까? – Beta

답변

0

는 다른 경고 유지 :

특수 문자는 일반적으로 "보호"됩니다, 또는 따옴표를 둘러싸과 함께 탈출했다. 괄호로 변수를 만들려면 큰 따옴표를 사용합니다.

DIR = "C:/stuff (really cool)" 

가장 큰 문제는 경로가 하나가 아닌 여러 부분으로 나뉘어지는 공간입니다.

GNU의 메이크업은 당신이 그렇게 $wildcard에 전화 당신은 당신이 실행하는 환경의 종류에 언급하지 않았다

$(wildcard C:/stuff\\ (really\\ cool)/*.jpg) 
+0

그건 나를 위해 작동하지 않습니다. 'dir = "C :/stuff (정말 멋지다)";; foo = $ (와일드 카드 $ (dir)/*)'; '$ (foo)'는 비어 있습니다. –

0

로 전환 할 \\과 공간을 탈출 할 수 있지만 모두 :

이 작동 다음의 인쇄 매커니즘이 msys/mingw뿐만 아니라 일반 DOS 프롬프트에서도 작동합니다.

DIR = C:/stuff\ (really\ cool) 
$(info Files in subdir are: $(wildcard $(DIR)/*.jpg)) 

all: 
    @echo "Files in subdir are: $(wildcard $(DIR)/*.jpg)" 

큰 따옴표 aroun d echo -ed 표현식은 msys/mingw에만 필요합니다.