Makefile의 $ PATH에 dir을 어떻게 추가 할 수 있습니까?
테스트를 실행할 Makefile을 작성하고 싶습니다. 테스트는 './tests'디렉토리에 있고 테스트 할 실행 파일은 './bin'디렉토리에 있습니다.
테스트를 실행할 때 ./bin 디렉토리가 $ PATH에 없기 때문에 exec 파일을 볼 수 없습니다.
다음과 같이 할 때 :
EXPORT PATH=bin:$PATH
make test
모든 것이 작동합니다. 그러나 Makefile에서 $ PATH를 변경해야합니다.
간단한 Makefile 내용 :
test all:
PATH=bin:${PATH}
@echo $(PATH)
x
경로를 올바르게 인쇄하지만 x 파일을 찾지 못합니다.
수동으로 수행하는 경우 :
$ export PATH=bin:$PATH
$ x
그러면 모든 것이 괜찮습니다.
Makefile에서 $ PATH를 어떻게 변경할 수 있습니까?
Make 자체의 export
지시문 을 시도 했습니까 (GNU Make를 사용한다고 가정)?
export PATH := bin:$(PATH)
test all:
x
또한 예제에 버그가 있습니다.
test all:
PATH=bin:${PATH}
@echo $(PATH)
x
첫째, echo
ed 값 PATH
은 쉘이 아닌 Make에 의해 수행되는 변수 의 확장입니다 . 예상 값을 인쇄하면 PATH
Makefile의 초기 어딘가 또는 Make를 호출 한 셸에서 변수를 설정 한 것 같습니다 . 이러한 행동을 방지하려면 다음과 같이 달러를 피해야합니다.
test all:
PATH=bin:$$PATH
@echo $$PATH
x
둘째, Make는 별도의 쉘 에서 레시피의 각 줄을 실행하기 때문에 어떤 경우에도 작동하지 않습니다 . 레시피를 한 줄로 작성하여 변경할 수 있습니다.
test all:
export PATH=bin:$$PATH; echo $$PATH; x
메이크 파일에 SHELL 변수를 먼저 설정하면 경로 변경이 영구적 인 것처럼 보입니다.
SHELL := /bin/bash
PATH := bin:$(PATH)
test all:
x
이것이 바람직한 행동인지 아닌지 모르겠습니다.
설계 상 make
파서는 별도의 쉘 호출에서 행을 실행하므로 PATH
한 행에서 변수 (예 :)를 변경 하면 다음 행에 변경 사항이 적용되지 않을 수 있습니다 (이 게시물 참조 ).
이 문제를 해결하는 한 가지 방법은 여러 명령을 단일 행 (으로 구분 ;
) 으로 변환 하거나 One Shell 특수 대상 ( .ONESHELL
, GNU Make 3.82 기준)을 사용하는 것입니다.
또는 PATH
쉘이 호출 될 때 변수를 제공 할 수 있습니다 . 예를 들면 :
PATH := $(PATH):$(PWD)/bin:/my/other/path
SHELL := env PATH=$(PATH) /bin/bash
내가 보통하는 일은 실행 파일의 경로를 명시 적으로 제공하는 것입니다.
EXE=./bin/
...
test all:
$(EXE)x
또한 크로스 컴파일하는 경우이 기술을 사용하여 QEMU와 같은 에뮬레이터에서 네이티브가 아닌 바이너리를 실행합니다.
EXE = qemu-mips ./bin/
make가 sh 쉘을 사용하는 경우 다음과 같이 작동합니다.
test all:
PATH=bin:$PATH x
To set the PATH
variable, within the Makefile only, use something like:
PATH := $(PATH):/my/dir
test:
@echo my new PATH = $(PATH)
참고URL : https://stackoverflow.com/questions/8941110/how-i-could-add-dir-to-path-in-makefile
'Nice programing' 카테고리의 다른 글
RxJava 2의 CompositeDisposable을 사용하는 방법은 무엇입니까? (0) | 2020.10.29 |
---|---|
배치 파일 입력에서 후행 슬래시 제거 (0) | 2020.10.29 |
SQL Server- "집계 함수 또는 GROUP BY 절에 포함되어 있지 않으므로 선택 목록에서 유효하지 않음"열 (0) | 2020.10.29 |
dplyr 파이프에서 NA 제거 (0) | 2020.10.29 |
VS Code에서 기본적으로 텍스트 줄 바꿈을 설정하는 방법 (0) | 2020.10.29 |