Проверка версии ifort / icc в make-файле - PullRequest
0 голосов
/ 14 февраля 2019

В этом вопросе « Проверка версии gcc в Makefile? » ответили, как извлечь версию компилятора gcc.Тем не менее, это не похоже на работу с компиляторами Intel, как ICC и Ifort?Кто-нибудь знает, чтобы заставить это дать тот же вывод, используя icc --version или ifort --version

1 Ответ

0 голосов
/ 14 февраля 2019

Если вы хотите решить ее из make, используя gmtt , вспомогательную библиотеку для GNUmake, это не глупо.Он имеет подстановочный знак соответствия для строк - подстановочные знаки , а не регулярные выражения.

include gmtt-master/gmtt-master/gmtt.mk

# Pattern for 3 version numbers: a string, a string, then 3 strings separated by '.'
# (hopefully the version numbers)
PATTERN3 := * * *.*.*
# the same for 4 version numbers (consistency, eh?)
PATTERN4 := * * *.*.*.*


# We take only words 1-3 from the version string and try to pattern match it,
# taking only the numbers from the result. The possibility of either 3 or 4 numbers
# complicates matters, we have to test if PATTERN4 matches, if not then we try PATTERN3
VERSION_NR = $(if $(call glob-match,$(wordlist 1,3,$(CC_VERSION)),$(PATTERN4)),\
$(wordlist 5,11,$(call glob-match,$(wordlist 1,3,$(CC_VERSION)),$(PATTERN4))),\
$(wordlist 5,9,$(call glob-match,$(wordlist 1,3,$(CC_VERSION)),$(PATTERN3))))


# just assume the contents of CC_VERSION is the result of $(shell $(CC) --version) etc.
CC_VERSION := ifort version 15.0.1 

$(info $(VERSION_NR))

CC_VERSION := ifort version 19.0.1.144

$(info $(VERSION_NR))

define CC_VERSION
 ifort (IFORT) 19.0.1.144 20181018
 Copyright (c) (C) 1985-2014 Intel Corporation. All rights reserved. 
endef

$(info $(VERSION_NR))

Выход:

$ make
 15 . 0 . 1
 19 . 0 . 1 . 144
 19 . 0 . 1 . 144
makefile:36: *** end.
...