Я ищу инструмент, который может генерировать makefile для проекта C/C++ для разных компиляторов (gcc, microsoft vc++, borland и т. д.) и разных платформ (Win, Linux, Mac).
любой хороший инструмент для генерации makefile?
Ответы (10)
Другие предложения, которые вы можете рассмотреть:
Scons — это кроссплатформенная кросс-компиляторная библиотека сборки, использующая скрипты Python для систем сборки. Используется в различных крупных проектах и работает очень хорошо.
Если вы используете Qt, QMake также является хорошей системой сборки.
CMake тоже очень хорош.
Наконец, Если ничего не помогло...
Пробовали ли вы использовать автоматический генератор 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
Раньше я использовал Bakefile с некоторым успехом. Это довольно просто и, кажется, работает хорошо.
CMake — это единственный инструмент, который может фактически генерировать настоящие проекты Visual Studio (т. е. не проекты Makefile, вызывающие внешний инструмент), и который автоматически воссоздает проекты при изменении входного файла сборки (CMakeLists.txt).
Проблемы с производительностью SCons хорошо известны и активно обсуждаются в списках рассылки SCons.
Я бы проголосовал за OMake. Он исправляет все жалобы, которые у меня были с GNU make:
- это полноценный язык.
- использует MD5 вместо временных меток.
- предоставляет минимальную оболочку, которая реализует самые полезные команды unix на всех платформах: find, sed, awk и т. д.
- работает с путями в стиле unix или dos.
- обширно задокументировано.
- поддерживает параллельные сборки.
- быстро.
Автоматическое создание (M|m)akefiles заставляет меня беспокоиться о том, что вы пытаетесь здесь сделать.
Вы понимаете, что происходит под одеялом, когда вы печатаете make? Или гмейк? Я спрашиваю только потому, что если вы этого не сделаете, когда что-то сломается, например, новые изменения кода не будут включены в сборку, у вас возникнут трудности с попыткой работать с тем, что произошло.
Чтобы начать понимать make, могу ли я предложить прочитать "Управление проектами с помощью GNU Make", Роберт Мекленберг. В первых главах рассказывается, как работает make. Ознакомиться с тем фактом, что make — это обратная цепочка, — одна из самых важных вещей, которые вы можете сделать.
Если вы этого не сделаете, и ваша система будет работать, то вы будете, используя термин The Pragmatic Programmers, "программирование по совпадению". (-:
Кстати, отличные статьи доступны на их сайте! И я не связан с ними. YMMV. Яда-яда...
Я также второй CMake. Я уже давно использую его в мультиплатформенном проекте и очень им доволен.
Один из вопросов, который следует учитывать, - хотите ли вы создателя «makefile» или заменяющую систему сборки? Проблема с заменой систем сборки заключается в том, что вы обычно не получаете хорошей интеграции IDE для платформ, пользователи которых этого ожидают (Visual C++). Если вам нужен создатель make-файла вместо замены системы сборки, взгляните на MPC. Это бесплатно и с открытым исходным кодом.
Недавно к списку замен make добавился waf. Судя по личному опыту, SCONS отлично справляется со своей задачей.
Я не знаю, есть ли у вас еще интерес к этому вопросу. Я работаю над аналогичной проекцией автоматического генератора Makefile под названием CodeMate, разработанной с использованием Ruby. Возможно, сейчас он не настолько зрел для большого приложения, но я буду продолжать работать над ним, чтобы сделать его лучше. Пользователям не нужно редактировать какой-либо файл конфигурации для сборки программного обеспечения, или, по крайней мере, это предполагается. Кривая обучения должна быть сведена к минимуму.