Я экспериментирую с обновленной системой сборки на работе; В настоящее время я пытаюсь найти хороший способ установить компилятор & флаги в зависимости от целевой платформы.Хороший способ сделать «переключатель» в Makefile
То, что я хотел бы сделать что-то вроде
switch $(PLATFORM)_$(BUILD_TYPE)
case "Linux_x86_release"
CFLAGS = -O3
case "Linux_x86_debug"
CFLAGS = -O0 -g
case "ARM_release"
CC = armcc
AR = armlink
CFLAGS = -O2 -fx
...
, который не поддерживается GNU Make. Теперь, моя первая мысль была просто сделать
-include $(PLATFORM)_$(BUILD_TYPE)
который является довольно приличным решением, однако, это делает его трудно получить обзор того, что отличается от файлов, не говоря уже о том, что я с нетерпением ждет письмо &, поддерживая хорошие 60-80 файлов, каждый из которых содержит набор определений переменных.
Кто-нибудь, возможно, знает, как лучше это сделать? То есть установка набора флагов и других параметров на основе другой переменной?
Мое использование-на самом деле состоит в том, что у меня есть система на основе make-файлов, которая строит большой набор компонентов, некоторые из которых имеют настраиваемые сценарии, которые нужно правильно управлять. Система сборки держит вещи отдельно для каждого целевого результата с строкой типа $ (arch), которая не может быть передана в config.sub, поэтому мне нужен оператор case, который преобразует наш $ (arch) в значение -host для передаваться скрипту configure. Мы фактически получаем $ (arch) от чего-то вроде `-include $ (PLATFORM) _ $ (BUILD_TYPE)` в верхней части системы сборки. – 2016-03-24 15:59:31