메이크 파일에서 define
지시문을 사용하여 변수를 정의합니다. 이 변수에는 실행하고자하는 명령의 구성 가능한 목록이 있습니다.메이크 파일 정의 : 재귀 확장 질문
이 변수는 파일 목록 (예 : .foo
개 파일)을 가져오고 싶습니다. 이 파일은 makefile 실행 중에 작성됩니다. 예를 들어 makefile :
MY_VAR = $(wildcard *.foo)
define MY_VAR2
echo $(1) $(MY_VAR)
endef
foo: create_files
$(call MY_VAR2, ls)
rm -f *.foo
create_files:
touch foo.foo
touch bar.foo
원하는 결과가 표시되지 않습니다. 선언시에 MY_VAR2
이 평가되는 것 같습니다.
원하는 동작을 얻는 방법이 있습니까?
편집 : sateesh 올바르게 지적
$(shell)
명령은, 위의 예를 들어 작동합니다. 그러나 아래 예제에서는 작동하지 않습니다. 이 예제의 가장 큰 차이점은 새 파일이 MY_VAR2
안에 생성된다는 것입니다.
MY_VAR = $(wildcard *.foo)
TEST_VAR = $(shell ls *.foo)
define MY_VAR2
@touch foo.foo
@touch bar.foo
@echo "MY_VAR" $(1) $(MY_VAR)
@echo "TEST_VAR" $(1) $(TEST_VAR)
endef
foo:
$(call MY_VAR2, ls)
@rm -f *.foo
나는 규칙을 추가하여이를 해결할 수 있습니다. 더 간단한 방법이 있습니까?
나는 아주 잘 만들지도 모른다. 나는 내가하고 싶은 것을 설명하려고 노력할 것이다. 일부 규칙을 해결하기 전후에 몇 가지 작업을 수행하려고합니다. 두 번째 예제에서, 세 번째 (그리고 네 번째 ...) 규칙을 해석 할 때'foo'의 *** body ***을 실행하고 싶습니다. 제 생각에'define'은 꽤 많은 함수 선언입니다. 나는 그것에 대해 생각할 것이다. 어쩌면 쉘 스크립트가 가장 좋은 경로일지도 모르지만 그 상황은 좀 더 복잡 할 것입니다. –