보통 버전은 여러 #define
값의 구성으로 정의됩니다 (예 : arv library).
그럼 간단하고 작업 예를 들어 가자 : 당신의 메이크 파일에서 다음
// myversion.h
#define __MY_MAJOR__ 1
#define __MY_MINOR__ 8
: 더 그래서 나는 몇 가지 도구를 사용하고 여기
# Makefile
source_file := myversion.h
MAJOR_Identifier := __MY_MAJOR__
MINOR_Identifier := __MY_MINOR__
MAJOR := `cat $(source_file) | tr -s ' ' | grep "\#define $(MAJOR_Identifier)" | cut -d" " -f 3`
MINOR := `cat $(source_file) | tr -s ' ' | grep '\#define $(MINOR_Identifier)' | cut -d" " -f 3`
all:
@echo "From the Makefile we extract: MAJOR=$(MAJOR) MINOR=$(MINOR)"
설명 강력한 :
012 3,516,
tr -s ' '
은 : 우리의 목적과 일치하는 유일한 행을 선택
cut -d" " -f 3
는 :
grep
은 요소들 사이의 추가 공간을 제거하기 위해 타겟 값 선택된 행의 세 번째 요소를 추출!
정의 값은 숫자 일뿐만 아니라 모든 값일 수 있습니다.
은 사용에주의 :=
(안 =
)를 참조하십시오 : https://stackoverflow.com/a/10081105/4716013 자신의 버전 문자열이 보이는
하지만 의심스럽게 손으로 만들어진, 나 또한'what' 도구를 확인하는 것이 좋습니다 것입니다. 그 플러스 쉘은 그가 찾고있는 것일 수 있습니다. – Dummy00001
답장을 보내 주셔서 감사합니다. 실제로는 작동 할 수도 있지만, 내 능력을 sed (그리고 다른 유틸리티들, 아래 mouviciel에 언급 됨)에 맞추기 만하면됩니다. – Manjabes