сделать --- форматы Linux и Windows - PullRequest
2 голосов
/ 21 мая 2009

У меня большая проблема .. Я скомпилировал мои c-файлы, используя linux make file в ОС Linux.

Я хочу скомпилировать те же файлы в Windows, используя тот же файл make в командной строке. Для этого у меня есть утилита nmake и утилита Cygwin.

Я сделал это успешно с простыми программами с простым файлом make ..

Но невозможно скомпилировать, когда я использовал сложные файлы C со сложным файлом make.

Я изменил «/» в Linux-файле make на «\» в Windows? Любые другие изменения?

Я хочу знать: «Есть ли какие-либо специальные форматы файлов make в Windows?»

также разница между ними ..

Я действительно нуждаюсь в этом ...

Ответы [ 6 ]

5 голосов
/ 22 мая 2009

К сожалению, nmake вдохновлялся make только вяло, и они не поняли многих важных вещей. Безусловно, проще всего начать с того, что на обеих платформах используется один и тот же вариант make.

В linux Gnu make является лучшим вариантом по умолчанию.

В Windows есть несколько источников для Gnu make, с некоторыми изюминками на выбор. Лично я в основном использую встроенную сборку win32 Gnu make из проекта GnuWin32 . Возможно, вы захотите покопаться в остальных пакетах проекта, потому что некоторые из других также будут полезны.

Альтернативные источники Cygwin и MinGW32 / MSYS .

Cygwin - надежная попытка создать среду совместимости * nix поверх ядра Windows. Он состоит из DLL, которая экспортирует огромный процент системных вызовов * nix (особенно POSIX), реализованных через Windows API. Эта DLL также имеет свое собственное представление о монтировании дисков и предпочитает имена путей в стиле * nix. Сама DLL является лицензией GPL (хотя лицензия на коммерческое использование предоставляется за отдельную плату), и программы, встроенные в среду Cygwin, требуют ее по умолчанию, что может быть важным фактором. Другим фактором является то, что Cygwin не дружелюбен к обычным пользователям Windows, поэтому разработчикам на его основе обычно трудно иметь дело с пользователями, не являющимися Unix. Однако для кроссплатформенного разработчика Cygwin может быть действительно полезным, поскольку он предоставляет вам все обычные подозрительные служебные программы, необходимые для вашего Makefile, и включает в себя собственный GCC для Windows, предназначенный для MinGW32, а также GCC, ориентированный на среду Cygwin.

MinGW32 - это проект переноса, который отлично справился с переносом компиляторов GCC для работы в качестве собственных исполняемых файлов Windows. При использовании вместе с заголовочными файлами, которые они предоставляют, можно использовать почти весь API-интерфейс Windows через DLL времени выполнения C, которая поставляется с современными установками Windows.

MSYS - это легкая ветвь Cygwin, которая содержит минимальный набор утилит (начиная с оболочки * nix), которые обычно предполагаются существующими в типичном * nix Makefile. В отличие от Cygwin, MSYS настроен так, что целью по умолчанию является собственный Windows API.

Здесь я намекаю на что-то, и, вероятно, должен просто заявить, что проблемы с совместимостью не заканчиваются на диалекте использования.

Сам язык Makefile сильно зависит от доступной командной оболочки, и в большинстве серьезных файлов Makefile проекта используются многие из * nix основных утилит, таких как cp и rm.

Я бы настоятельно рекомендовал начать с сборки сборки GnuWin32, а также установить MinGW32 и MSYS. Тогда сравнительно легко написать Makefile, который работает как под MSYS, так и под linux, и требует лишь небольшого количества логики для конкретной платформы.

1 голос
/ 21 мая 2009

NMake - это инструмент Windows, который будет анализировать только пути в стиле Windows, то есть пути с буквами дисков и обратными слешами. Поэтому вы должны использовать GNU Make, установленную с Cygwin.

1 голос
/ 21 мая 2009

Вы должны рассмотреть CMake для кроссплатформенной сборки, но ваша настоящая проблема в том, что вам не нужно менять '/' на '\'. Если вы работаете в Cygwin или msys (рекомендуется), это должно быть выполнено за вас.

0 голосов
/ 21 мая 2009

nmake получил свой собственный формат, а не сами окна, поэтому формат make-файла связан с инструментом make, а не с os. Для простых вещей формат одинаков для g (nu) make и nmake, как и предлагали люди, прежде чем использовать только gmake.

0 голосов
/ 21 мая 2009

Используйте gnumake на обеих платформах. Я делаю. Я не прикасался к Visual C годами.

0 голосов
/ 21 мая 2009

nmake должен читать ваши make-файлы, ладно, различия обычно между версиями make, а не ОС.

Большой вопрос в том, какова ваша целевая платформа на самом деле, пытаетесь ли вы заставить этот код работать в Windows изначально или хотите запустить его под Cygwin?

...