Создайте makefile для нескольких операционных систем, этот make (ext?) не работает?

StackOverflow https://stackoverflow.com/questions/306840

  •  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-файлов.Это должно работать на большинстве платформ.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top