2015-08-13 3 views
0

Как говорится в названии, я пытаюсь использовать awk внутри своего файла makefile, чтобы вытащить номер версии. После того, как номер версии потянут, он становится экспортированным и привязанным к концу пакетов, которые я создаю. У меня есть часть экспорта. Проблема заключается в том, что любые двоичные файлы я создаю маркированы «foobin-2.bin» вместо «foobin-2.0.0.0.67.bin»Использование awk в make-файле для чтения номеров версий

У меня есть версия файла, называемого «foo_version.mk»

Здесь являются его содержание:

#version.mk. 
VERSION 2.0.0.0.67 

Вот что делает мой Makefile:

export version = $(shell awk '{ v[$$1] = $$2; } \ 
       END {printf("%d.", \ 
        v["VERSION"]); \ 
        }' version.mk) 

Как вы можете сказать, что я новичок в AWK и мой опыт был ограничен использованием и редактирования вещи других народов , Вся помощь была оценена.

ответ

1

%d сообщает awk, чтобы преобразовать версию в десятичное число и, таким образом, сбросив все после первого .. Вы, вероятно, хотели %s, но нет необходимости использовать printf, и вам также не нужен массив. Предполагая, что ваш синтаксис makefile требует, чтобы каждый $ был удвоен, как в вашем текущем сценарии, вам нужно всего лишь:

export version = $(shell awk '$$1=="VERSION"{ print $$2"." }' version.mk)