Ваша цепочка инструментов должна поддерживать обе биты; ваш компилятор и компоновщик должны иметь возможность генерировать как 64-битный, так и 32-битный код, или вы можете иметь две отдельные цепочки инструментов. Давайте предположим, что ваш компилятор находится в 64-битном режиме по умолчанию и использует переключатель для создания 32-битного кода. Вы можете использовать переменные, специфичные для цели, в make
, чтобы установить этот переключатель для 32-битной сборки.
Помимо компилятора, вам также придется установить некоторые другие переменные для двух сборок по-разному. На ум приходят OBJ_DIR
и LIB_DIR
, поэтому выходные файлы не смешиваются; LIB_INCLUDES
, поскольку для обеих сборок требуются собственные версии библиотек, с которыми вы ссылаетесь (поэтому вам понадобятся две версии SampleApi.dll
).
Ваш make-файл будет выглядеть примерно так:
32bit: CC += -m32
32bit: OBJ_DIR = obj32
32bit: LIB_DIR := $(LIB_DIR)32
32bit: LIB_INCLUDES = -L$(SAMPLE_DIR)/lib32
all: 64bit 32bit
64bit 32bit: $(DIRS) $(TARGET)
(я исключил части, которые не нужно менять.)