Подтвердить что ты не робот

Любой хороший инструмент для создания make файлов?

Я ищу инструмент, который может генерировать makefile для проекта C/С++ для разных компиляторов (gcc, microsoft vС++, borland и т.д.) и разных платформ (Win, Linux, Mac).

4b9b3361

Ответ 1

Другие предложения, которые вы можете рассмотреть:

  • Scons - это кросс-платформенная библиотека сборки кросс-компилятора, использует раскладку Python для систем сборки. Используется во множестве крупных проектов и работает очень хорошо.

  • Если вы используете Qt, QMake - тоже хорошая система сборки.

  • CMake также очень милый.

  • Наконец, Если все остальное не удается...

Ответ 2

Вы пробовали Автоматический генератор Makefile?

Он поддерживает следующие компиляторы:

Borland 3.1 
Borland 5.0 
Borland 5.0, 16 bit 
Borland 5.5 
Borland 5.6 
Borland 5.8 
CC 
Gnu g++ 
Gnu g++, dynamic library 
Intel 5, 6, 7 for Linux 
Intel 5, 6, 7 for Linux, dynamic library 
Intel 5, 6, 7 for windows 
Intel 8,9,10 for Linux 
Intel 8,9,10 for Linux, dynamic library 
Intel 8,9 for windows 
Intel 10 for windows 
Visual C++ 5 
Visual C++ 6, 7, 7.1 
Visual C++ 8 
Open Watcom 
Watcom 10A 
Watcom 10A, 16 bit 

Ответ 3

Я использовал Bakefile с некоторым успехом. Это довольно просто и, кажется, хорошо работает.

Ответ 4

CMake - единственный инструмент, который может фактически генерировать реальные проекты Visual Studio (т.е. не "Makefile" -проекты, которые вызывают внешний инструмент) и который автоматически воссоздает проекты при изменении входного файла сборки (CMakeLists.txt).

Проблемы с производительностью SCons хорошо известны и обсуждаются в списках рассылки SCons.

Ответ 5

Я проголосовал бы за OMake. Он исправляет все жалобы, которые у меня были с GNU make:

  • это полномасштабный язык.
  • использует метки MD5 вместо временных меток.
  • предоставляет минимальную оболочку, которая реализует наиболее полезные команды unix на всех платформах: find, sed, awk и т.д.
  • работает с любыми путями типа unix или dos.
  • широко документировано.
  • поддерживает параллельные сборки.
  • быстро.

Ответ 6

Автоматическая генерация (M | m) akefiles заставляет меня беспокоиться о том, что вы пытаетесь сделать здесь.

Вы понимаете, что происходит под обложками, когда вы печатаете make? Или gmake? Я только спрашиваю, потому что если вы не делаете, когда что-то ломается, например, новые изменения кода не включаются в сборку, у вас возникнут трудности с попыткой выполнить то, что произошло.

Чтобы начать понимать make, могу ли я предложить прочитать "" Управление проектами с помощью GNU Make" Роберта Мекленберга. В первых главах рассказывается, как работает make. Получение вашего услышанного вокруг факта, что make является обратной цепью, - одна из самых больших вещей, которые вы можете сделать.

Если вы этого не сделаете, и ваша система работает, то вы будете использовать термин "Прагматичные программисты", программирование по совпадению". (-:

BTW Отличные статьи доступны на их сайте! И я не связан с ними. YMMV. Яд-болтовня...

Ответ 7

Я также добавлю CMake. Я использовал его довольно долго в многоплатформенном проекте, и я очень доволен этим.

Ответ 8

Одной из проблем, которую следует учитывать, является создание "создателя файла" или сменной системы сборки? Проблема с системами сменных систем сборки заключается в том, что вы обычно не получаете хорошей интеграции IDE для платформ, чьи пользователи ожидают этого (Visual С++). Если вам нужен создатель make файла вместо системы сменной сборки, посмотрите MPC. Это бесплатный и открытый исходный код.

Ответ 9

Недавнее дополнение к списку замещений make - waf. Из личного опыта SCONS делает работу очень хорошо.

Ответ 10

Я не знаю, есть ли у вас интерес к этому вопросу. Я работаю над аналогичной проекцией автогенератора Makefile, называемой CodeMate, разработанной с использованием Ruby. Возможно, сейчас это не так зрело для большого приложения, но я буду продолжать работать над этим, чтобы сделать его лучше. Пользователям не нужно редактировать какой-либо файл конфигурации для создания программного обеспечения или, по крайней мере, это должно быть. Кривая обучения должна быть минимизирована.