[makefile] 다른 파일의 내용을 읽어서 makefile에 변수 만들기

다른 데이터 파일의 전체 내용이되는 값인 makefile에서 즉석에서 변수를 만들려면 어떻게해야합니까?



답변

Makefile의 변수를 다른 파일의 내용으로 설정하는 것을 좋아한다고 생각합니다.

FILE=test.txt
VARIABLE=`cat $(FILE)`

target:
    echo $(VARIABLE)


답변

GNU make 가정 :

file := whatever.txt
variable := $(shell cat ${file})


답변

GNU make 버전 4.2는 파일 읽기 작업을 지원하므로 Maxim Egorushkin 의 훌륭한 답변 과 관련하여 이제이 문제를 해결할 수있는 선택적 방법이 있습니다.

FILE     := test.txt
variable :=$(file < $(FILE))


답변

catWindows에는 존재하지 않습니다. Linux 및 Windows에서 작동하는 솔루션 :

cat := $(if $(filter $(OS),Windows_NT),type,cat)
variable := $(shell $(cat) filename)

설명 : Windows에는 항상 OS‘Windows_NT’와 동일하게 정의 된 환경 변수가있는 것 같습니다. 이런 식으로 Windows의 경우 type명령이 사용되고 Windows cat가 아닌 경우 에는 사용됩니다.


답변

$(file op filename)추가 된 이후 훨씬 더 간단합니다 .

VARIABLE = $(file < my_file.txt)

매뉴얼 페이지 : https://www.gnu.org/software/make/manual/html_node/File-Function.html#index-file_002c-reading-from


답변

GNU make를 사용하는 경우이 효과를 얻는 또 다른 방법은 다른 makefile의 make “include”를 사용하는 것입니다.

Makefile에서 :

include "./MyFile.mak"

내용이 포함 된 “MyFile.mak”파일을 만듭니다.

FILE := "my file content"
FILE += "more content 1"
FILE += "more content 2"


답변

플랫폼이 지정되지 않았기 때문에 이것이 Solaris에서 작동하는 방식입니다.

VERSION:sh = cat VERSION

all:
        echo $(VERSION)