Справка по Makefile (и команда Shell) - PullRequest
0 голосов
/ 28 июля 2011

Мне нужна помощь при извлечении теста из команды оболочки для использования в переменной Makefile.

По сути, я использую две разные версии программы на разных серверах, но использую общий make-файл. Одним из них является 6.4.2 версия gnatmake, другим является 6.2.2 версия. Проблема в том, что версия 6.2.2 не поддерживает флаг "- unchecked-shared-lib-import" , который мне нужно включить при компиляции с 6.4.2 версия.

Чтобы найти версию, я решил использовать команду 'gnatmake --version' . Это то, что каждый возвращает ниже. Как я могу разобрать версию? (6.2.2 или 6.4.2)?

Gnatmake 6.2.2:

GNATMAKE Pro 6.2.2 (20090612-43)
Copyright (C) 1995-2009, Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
See your AdaCore support agreement for details of warranty and support.
If you do not have a current support agreement, then there is absolutely
no warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE.

Gnatmake 6.4.2:

GNATMAKE Pro 6.4.2 (20110614-45)
Copyright (C) 1995-2010, Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
See your AdaCore support agreement for details of warranty and support.
If you do not have a current support agreement, then there is absolutely
no warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE.

Вот как я думал, что будет создан make-файл, поэтому, если GNATMAKE_VERSION равен 6.4.2 , тогда - unchecked-shared-lib-import будет в переменной GNAT_FLAG , которую я могу включить в будущие параметры.

GNATMAKE_VERSION:=$(shell gnatmake --version)

GNAT_FLAG:= 
#  if not equal (GNATMAKE_VERSION=6.2.2)
#     GNAT_FLAG:= "--unchecked-shared-lib-imports"
# 

test:
    echo "$(GNATMAKE_VERSION)"

test2:
    echo "$(GNAT_FLAG)"

Есть ли простой способ сделать это?

1 Ответ

1 голос
/ 29 июля 2011

(Извините, я сначала не понял проблему.)

Попробуйте, если у вас есть sed:

GNATMAKE_VERSION:=$(shell gnatmake --version | sed -e '/GNATMAKE/!d' -e 's/GNATMAKE Pro \([^ ]*\) .*/\1/')

или это, если у вас есть head и cut:

GNATMAKE_VERSION:=$(shell gnatmake --version | head -n 1 | cut -f3 -d' ')

или это, если Gnatmake позволяет это:

GNATMAKE_VERSION:=$(shell gnatmake --version)
GNATMAKE_VERSION:=$(word 3,$(GNATMAKE_VERSION))
...