Ни для кого не секрет, что make - самая распространенная система сборки и особенно для unix.
Но make требует особого ухода за Makefile либо каких-то иных, сторонних утилит для его обслуживания. В GNU мире широкое распространение получил autoconf и наверное по праву. У него много достоинств для охвата широкого спектра конфигураций на разных инсталляциях.
В моем же случае autoconf слишком "жирен" и для сборки на моих одних и тех - же машинах повторяет все шаги, тестирует и.т.д.
Для себя же, уже давно выбрал Makefile Project Creator (MPC). Я использую MPC из библиотеки ADAPTIVE Communication Environment (ACE) тем более, что я и саму библиотеку часто использую и в поставке имеются дополнения и улучшения. Также MPC умеет создавать файлы проектов для Visual Studio и других распространенных сред.
Итак, что нам нужно для сборки на разных платформах?
Но make требует особого ухода за Makefile либо каких-то иных, сторонних утилит для его обслуживания. В GNU мире широкое распространение получил autoconf и наверное по праву. У него много достоинств для охвата широкого спектра конфигураций на разных инсталляциях.
В моем же случае autoconf слишком "жирен" и для сборки на моих одних и тех - же машинах повторяет все шаги, тестирует и.т.д.
Для себя же, уже давно выбрал Makefile Project Creator (MPC). Я использую MPC из библиотеки ADAPTIVE Communication Environment (ACE) тем более, что я и саму библиотеку часто использую и в поставке имеются дополнения и улучшения. Также MPC умеет создавать файлы проектов для Visual Studio и других распространенных сред.
Итак, что нам нужно для сборки на разных платформах?
- Библиотека ACE. Даже если вам данная библиотека не нужна, MPC в ее поставке отлажен и требует наименьших усилий по доработке.
- Распаковываем ее, ставим переменную окружения ACE_ROOT, указывающую на каталог ACE_wrappers.
- На каждой платформе в каталоге ACE_wrappers/makeinclude/include создаем файл platform_macros.GNU . Включаем туда одну строчку, например для linux:
include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU - Создаем для нашего проекта mpc файл:
project (ourproject) {
sharedname = ourlibname
Source_Files {
main.cpp
util.cpp
}
} - Получаем наши проектные Makefile - запускаем в каталоге проекта:
perl ${ACE_ROOT}/bin/mwc.pl -type gnuace - Запускаем make для сборки.
- Добавляем в наш mpc файл другие опции (смотрим в документации в составе ACE).
Интересно, а заголовочные файлы добавлять в MPC-файл не нужно?
ОтветитьУдалитьФайлы заголовков также можно добавлять:
ОтветитьУдалитьHeader_Files {
file1.h
file2.h
}