У меня есть make-файл, который должен использовать две разные версии GCC, чтобы выводить разные исполняемые файлы за один вызов. В частности, я использую один, предназначенный для старых 32-разрядных компьютеров Windows, и другой, предназначенный для гораздо более новых компьютеров. К сожалению, такие переключатели, как -m32 и т. д., сами по себе не помогают, и мне действительно нужны две разные версии GCC.
Я получаю странные ошибки, когда добавляю обе версии в PATH и вызывайте их непосредственно в make-файле. Предполагалось, что это связано с модульной конструкцией GCC. Основная идея моего make-файла следующая:
Код: Выделить всё
GCC_32 = i686-w64-mingw32-gcc
GCC_64 = x86_64-w64-mingw32-gcc
win_32_bit: $(COMMON_REQUIREMENTS_NOT_IN_EXAMPLE)
$(GCC_32) -mwindows -m32 -march=pentium $^ old_main_file.cpp -static-libstdc++ $(LIBS_NOT_IN_EXAMPLE) -o old.exe
win_64_bit: $(COMMON_REQUIREMENTS_NOT_IN_EXAMPLE)
$(GCC_64) -mwindows -m64 -march=core2 $^ new_main_file.cpp -static-libstdc++ $(LIBS_NOT_IN_EXAMPLE) -o new.exe
Если бы я вместо этого удалил все ссылки на GCC из PATH, а затем жестко запрограммировал пути, код тогда работал бы.
Код: Выделить всё
GCC_32 = /mingw32/bin/i686-w64-mingw32-gcc
GCC_64 = /mingw64/bin/x86_64-w64-mingw32-gcc
# The rest is the same
Очевидно, что жестко прописанные пути — это плохо и непереносимо. Я предпочитаю выяснить, почему возникает конфликт, и написать make-файл, который его разрешит. Возможно, есть способ, например. скройте другой компилятор друг от друга или, возможно, получите пути из PATH, удалите их и внедрите в make-файл
Подробнее здесь:
https://stackoverflow.com/questions/792 ... n-makefile