다른 메이크파일 덮어쓰기 :=

다른 메이크파일 덮어쓰기 :=

Bar라는 변수가 있는 Foo라는 makefile이 있다고 가정해 보겠습니다.

Foo에는 다음이 있습니다.

Bar := /some/initial/path
Other_var := ${Bar}/more/paths

그런 다음 기본 makefile에서 Foo를 사용합니다.

include Path/to/Foo

하지만 Bar의 값이 Foo에서 사용되는 값이 되도록 기본 makefile에 Bar를 어떻게 설정할 수 있습니까? eval을 사용해 보았지만 :=정말 어려운 일이었습니다. 큰 목표는 Foo의 소스를 변경하는 것이 아닙니다.

답변1

내 GNU make 4.0 온라인 정보에 따르면 override할당에 키워드를 사용하면 일반적으로 명령줄을 재정의하는 데 사용됩니다.변수=값설정하면 이 키워드 없이 추가 할당으로 값이 override변경 되지 않습니다.

따라서 기본 makefile에서 다음을 시도해 볼 수 있습니다.

override Bar := myvalueforbar
include Path/to/Foo

답변2

포함하기 전에 정의 하면 Bar열을 사용할 수 있습니다 .FooMakefileFoo

예를 들어, Makefile각 Python 패키지에는 다음이 포함되어 있습니다(물론 각 Makefile의 처음 두 줄은 다릅니다).

UTILNAME:=yaml
PKGNAME:=ruamel.yaml
VERSION:=$(shell python setup.py --version)

include ~/.config/ruamel_util_new/Makefile.inc

공통 루틴 에서 Makefile.inc배포 파일을 생성하는 방법을 소개합니다.

DIST:=dist/$(PKGNAME)-$(VERSION).tar.gz
WHL:=dist/$(PKGNAME)-$(VERSION)-py*-any.whl

$(DIST): $(SRC)
        make check
        python setup.py sdist

관련 정보