Форум русскоязычного сообщества Ubuntu


Автор Тема: один Makefile и для windows, и для linux  (Прочитано 544 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн dronte

  • Автор темы
  • Любитель
  • *
  • Сообщений: 89
    • Просмотр профиля
один Makefile и для windows, и для linux
« : 22 Февраль 2014, 23:41:47 »
Подскажите пожалуйста, как сделать Makefile так, чтобы одним файлом можно было бы собирать сразу и под виндой, и под линуксом?
проблема состоит в том, что команды в консоли для сборки и очистки после нее различаются в винде и в линуксе, как следствие приходится иметь два файла, а это неудобно, по вынужденным причинам писать проект приходится под виндой, а сдавать, как и целевая машина проекта вообще, под линуксом. Идея с проверкой переменных среды (банально переменные $(OS) и %OS%)не подходит, т.к. запрос на вывод переменных среды в винде выглядит %OS%, а в линукс $(OS), таким образом синтаксис другой и просто так определить место запуска не получится.

т.е.цель состоит в том, чтобы определить ОС и использовать те названия команд и пути, которые сохранены в перменных этого Makefile для соответствующей ОС

Знает кто что, тут можно сделать?
« Последнее редактирование: 22 Февраль 2014, 23:46:45 от dronte »

Оффлайн SergeyIT

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 4290
  • Все по палатам!
    • Просмотр профиля
Re: один Makefile и для windows, и для linux
« Ответ #1 : 22 Февраль 2014, 23:45:03 »
dronte, возьми какой-нибудь мултиплатформенный софт и посмотри, как организовано
Извините, я все еще учусь

Оффлайн dronte

  • Автор темы
  • Любитель
  • *
  • Сообщений: 89
    • Просмотр профиля
Re: один Makefile и для windows, и для linux
« Ответ #2 : 22 Февраль 2014, 23:56:45 »
к сожалению обычно у кроссплатформенных приложений исходиники даются только для linux, а для windows уже собраный бинарник, сейчас вот взял первое что пришло в голову: gimp, ну и скачал исходники, ну и что там? обычный ./configure линуксовый башскрипт, который к винде ничего не имеет вообще. Нет разве?

Оффлайн SergeyIT

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 4290
  • Все по палатам!
    • Просмотр профиля
Re: один Makefile и для windows, и для linux
« Ответ #3 : 23 Февраль 2014, 00:05:34 »
dronte, а что, только один гимп из софта существует в мире?
Извините, я все еще учусь

Оффлайн dronte

  • Автор темы
  • Любитель
  • *
  • Сообщений: 89
    • Просмотр профиля
Re: один Makefile и для windows, и для linux
« Ответ #4 : 23 Февраль 2014, 00:07:31 »
ткните просто во что-то более конкретное, а то как известно метод полного перебора известен своей скоростью работы .... да и на ум приходят только известные программы с аналогичной "политикой"

Оффлайн JmAbuDabi

  • Старожил
  • *
  • Сообщений: 2468
  • 나는 빅터 해요. 나는 프로그래머입니다
    • Просмотр профиля
Re: один Makefile и для windows, и для linux
« Ответ #5 : 23 Февраль 2014, 00:16:30 »
dronte,
Скорее всего не так, лучше сделать два Makefile один для Винды, второй для Линукса.
Покой – это не место, где тихо и мирно, где нет шума и беспокойства.
Покой – это когда при всем этом, вы сохраняете мир и спокойствие в своем сердце.

Оффлайн dronte

  • Автор темы
  • Любитель
  • *
  • Сообщений: 89
    • Просмотр профиля
Re: один Makefile и для windows, и для linux
« Ответ #6 : 23 Февраль 2014, 00:26:31 »
Решение нашел случайно, наткнувшись на сборку bash под windows, в которой линуксовый синтаксис, а переменные среды виндовые, так что да, напишу тоже, что-то вроде configure и дело с концом, проблема решена

Оффлайн SergeyIT

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 4290
  • Все по палатам!
    • Просмотр профиля
Re: один Makefile и для windows, и для linux
« Ответ #7 : 23 Февраль 2014, 00:27:40 »
dronte, на ум ничего не приходит само... работать надо
Вот скачал сорсы и посмотрел makefile от freepascal
Там по тексту вот такая переменная

MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded avr-embedded armeb-linux armeb-embedded mipsel-linux

Извините, я все еще учусь

 

Страница сгенерирована за 0.055 секунд. Запросов: 24.