Создайте makefile для нескольких операционных систем, этот make (ext?) не работает?
-
08-07-2019 - |
Вопрос
У меня есть рабочий makefile, который создается с помощью mingw32.Теперь я переименовал этот makefile в Makefile.w32 (исходный код -> http://pastie.org/319964)
Теперь у меня есть Makefile со следующим.Проблема в том, что он не создает мой исходный код
all:
make mingw32
clean:
@echo "causes an infinite loop -> make mingw32 clean"
mingw32:
@echo "yeahhhhhhhhh"
make Makefile.w32
mingw32-clean:
@echo "mingw clean"
make Makefile.w32 clean
Результат:
> "make"
make mingw32
make[1]: Entering directory `/c/nightly/test'
yeahhhhhhhhh
make Makefile.w32
make[2]: Entering directory `/c/nightly/test'
make[2]: Nothing to be done for `Makefile.w32'.
make[2]: Leaving directory `/c/nightly/test'
make[1]: Leaving directory `/c/nightly/test'
Мне кажется, ему не нравится расширение Makefile.w32.Я не понимаю, почему он не строится.Очевидно, что это добирается до моей строки "создать Makefile.w32".
Решение
"make Makefile.w32" ищет цель с именем Makefile.w32, а не с файлом make с таким именем.Чтобы запустить make и указать ему прочитать make-файл "Makefile.w32", используйте переключатель -f:
make -f Makefile.w32
Редактировать:Кстати, зачем вы запускаете отдельный экземпляр make в целевом объекте "all", если все, что вы хотите, это чтобы "all" зависело от целевого объекта "mingw32" в том же файле make?Было бы лучше, ИМХО, вместо этого объявить его как зависимую цель:
all: mingw32
Аналогично с "clean" и "mingw32-clean":
clean: mingw32-clean
Другие советы
Вы можете использовать смейк для генерации make-файлов.Это должно работать на большинстве платформ.