2012-05-24 1 views
0

예상대로 작동하지 그것으로 시작하는 doesnt는/그것에 $ (1)을 더할 것이다. 이 두 기능은 독립적으로 작동하지만 내 문제는 함께 사용할 때입니다. 메이크에서 메이크 함수 호출 내가 정의한 두 가지 기능에 문제가 있어요 다음과 같이 그들이

나는 다음과 같은 라인이 있습니다

이 라인은 내가하지만 $ (CLEAN_DIRS)에 할당 된 적절한 값을 갖는 $ (TEMP_DIRS)와 끝까지 실행 얻을
TEMP_DIRS := $(call qualify_path, $(lastword $(dirstack)), $(SRC_INCDIRS)) 
$(info TEMP_DIRS = $(TEMP_DIRS)) 
CLEAN_DIRS := $(call clean_path, $(TEMP_DIRS)) 
$(info CLEAN_DIRS = $(CLEAN_DIRS)) 

가 같은 값이를 $ (TEMP_DIRS) 내가 대신 clean_path에 전화를하고이를 사용하는 경우

CLEAN_DIRS := $(call clean_path, $(call qualify_path, $(lastword $(dirstack)), $(SRC_INCDIRS))) 

을 지금 : 난 그냥이 시점에서 디버깅을 위해 $ (TEMP_DIRS가) 정말 그냥이처럼 그들을 결합하려는 것이

TEMP_DIRS := $(call qualify_path, $(lastword $(dirstack)), $(SRC_INCDIRS)) 
$(info TEMP_DIRS = $(TEMP_DIRS)) 
CLEAN_DIRS := $(patsubst $(DRIVE_ROOT)/%,/%,$(abspath $(TEMP_DIRS))) 
$(info CLEAN_DIRS = $(CLEAN_DIRS)) 

$ (CLEAN_DIRS)에는 그 안에 모든 올바른 값이 있습니다. 나는 그것이 확장 명령과 관련이 있다고 확신한다. 예를 들어 eval이나 뭔가를 사용하지만 실제로 이것을 이해할 수는 없다. 누군가 내가 시도하고있는 것을 훌륭하게 수행 할 수있는 적절한 방법을 설명해주십시오. 시간 내 주셔서 감사합니다.

+0

재현 할 수 없습니다. 'DRIVE_ROOT','dirstack' 등의 입력 값을 게시 할 수 있습니까? 아니면 더 나은, 전체 메이크 파일? –

+0

간단한 메이크 파일로 재현 해 봅니다. 시도해 주셔서 감사합니다 – ThePosey

+0

이제는 간단한 테스트 케이스에서이 작업을 다시 만들 때 당연히 모든 작업이 제대로 작동합니까? 어둠 속에서도 시도해 볼 수있는 기회가 있습니까? GNU Make가 매우 민감하기 때문에 차이점을 지금 빗어보기 만합니다. – ThePosey

답변

0

물론이 말은 어리석은 실수 였고 다른 누군가를 찾지는 못했을 것입니다. 이전에 유닉스 시스템의 경로를 정리할 필요가 없기 때문에 유닉스 시스템이나 윈도우 시스템 용 시스템 명령어였던 별도의 makefile에 clean_path 함수를 정의했다. 나는 두 개의 다른 장소에서 정의 된 함수를 만드는 것이 엉망이었던 것 같아서 그냥 아무것도하지 않았다. 문제가 해결 될 때까지 모든 것을 주석으로 처리 한 다음 조각으로 조각을 다시 추가하는 문제를 발견했습니다. 일단 내가 윈도우 명령을 주석 처리하지 않았다면 다시 깨 졌으므로 거기를 들여다 보았고 clean_path 함수가 있었다. 도움과 시간들에 감사드립니다.