Поддержка Makefile для нескольких архитектур / конфигураций - PullRequest
1 голос
/ 07 июня 2011

Какой самый простой способ обеспечить поддержку make-файла для нескольких архитектур и конфигураций?Например, конфигурация выпуска может использовать больше оптимизации, чем конфигурация отладки.Должны ли изменяющиеся параметры быть определены как переменные в make-файле, и можно ли рассчитывать на их обновление пользователями по мере необходимости?

# Change to -O2 for release.
COMPILER_OPTIONS := -arch x86_64 -O0

Или это должно обрабатываться в правилах?

*_Release.a:
    # Recipe for building a release library, i.e., with optimization.
    # Unsure how to integrate this with different architectures.

Или, может быть, комбинация двух?

Ответы [ 2 ]

5 голосов
/ 07 июня 2011

Архитектуры и конфигурации являются ортогональными; они требуют разных подходов. Пользователь должен иметь возможность выбирать конфигурацию во время сборки, и самый чистый способ сделать это с разными целями. Но я не вижу смысла пытаться построить одну архитектуру на другой, поэтому выбор архитектуры должен выполняться автоматически. Детали будут зависеть от ваших потребностей, но ваш make-файл может выглядеть примерно так:

# Determine whatever we need to know about architecture with "uname" or its
# equivalent (I think it's "ver" on Windows).

MACHINE = $(shell "uname -m") 

ifeq ($(MACHINE), i386)
SOME_VAR = 386
foo:
    make a foo the i386 way  
else
SOME_VAR = something else
foo:
    make a foo some other way
endif


# Choice of configuration is up to the user

release: COMPILER_OPTIONS += -O0
debug: CCFLAGS += -g -Wall

debug release:
    whatever...
0 голосов
/ 07 июня 2011

Самый простой способ - это разные цели.В общих чертах:

RELFLAGS := -O2 
DBGFLAGS := -g

release: 
    $(COMMAND) $(RELFLAGS) $(FILES)

debug:
    $(COMMAND) $(DBGFLAGS) $(FILES)

То же самое с различными архитектурами, хотя я сам не делаю кросс-компиляцию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...