Ситуация следущая: имеется проект, точнее с++ его часть, достаточно большой, несколько миллионов строк. Проект полностью кросс-платформенный, на солярисе пользуемся dmake, на винде nmake, на linux не знаю, по-момему gnumake.
Хотелось бы, чтобы make средство было бы:
1. кроссплатформенным (без cygwin и прочего)
2. поддерживало бы хоть какие-нибудь репорты. сейчас приходится результаты получасовой компиляции прокручивать в консоли и искать где же там заругалось.
ну и опционально хотелось бы возможность генерить проекты для visual studio, т.к. студия используется повсеместно как IDE и для отладки.
вообщем пришло время уходить с древнего make, но куда не очень понятно.
Сейчас в качестве рабочего варианта рассматривается cmake (правда не знаю что там с репортами).
Кто работал с ant, scons или чем-то другим для больших с++ проектов, отзовитесь, плз, хотя бы поделиесь впечатлениями.
Здравствуйте, killua, Вы писали:
K>Ситуация следущая: имеется проект, точнее с++ его часть, достаточно большой, несколько миллионов строк. Проект полностью кросс-платформенный, на солярисе пользуемся dmake, на винде nmake, на linux не знаю, по-момему gnumake.
У меня похожая фигня, только проект небольшой, но все-равно собирать его хочется на разных платформах.
K>2. поддерживало бы хоть какие-нибудь репорты. сейчас приходится результаты получасовой компиляции прокручивать в консоли и искать где же там заругалось. K>ну и опционально хотелось бы возможность генерить проекты для visual studio, т.к. студия используется повсеместно как IDE и для отладки.
Репорты... ну это зависит от того как сами makefile-ы написаны. Видимо у вас они написаны кривовато Для репортов команда echo рулит, а символ @ перед именем команды позволяет не выводить ее на консоль и не захламлять output.
Генерить проекы для msvc из makefile-а можно используя тот же самый make.
Например так: make ... GENERATE_DSP=project.dsp <cr>
Фрагмент makefile-а:
%.o: %.cc
ifdef GENERATE_DSP
# тут конечно надо что-то более адекватное выводить
@echo $*.cc >> $(GENERATE_DSP)
else
@$(CXX) -c $(CXXFLAGS) $(CPPFLAGS) -o $@ $<
endif
Пока это только идея, но я намерен ее реализовать.
A>Репорты... ну это зависит от того как сами makefile-ы написаны. Видимо у вас они написаны кривовато Для репортов команда echo рулит, а символ @ перед именем команды позволяет не выводить ее на консоль и не захламлять output.
Под репортами я имел в виду несколько другое: скорее парсер outputа. Т.е. где какие warnings например. и т.п.
A>Генерить проекы для msvc из makefile-а можно используя тот же самый make. A>Например так: make ... GENERATE_DSP=project.dsp <cr>
Это 6ая студия. Если честно ее уже и на компах-то ни у кого в которе не осталось
Мы виндовую часть уже на whidbey компилим.
Здравствуйте, killua, Вы писали:
K>Доброго времени суток!
K>Ситуация следущая: имеется проект, точнее с++ его часть, достаточно большой, несколько миллионов строк. Проект полностью кросс-платформенный, на солярисе пользуемся dmake, на винде nmake, на linux не знаю, по-момему gnumake.
Могу посоветовать CMake. www.cmake.org. Успешно использую его в своих проектах, а так же частично перевел ACE-TAO (без его тестов) и Ice.
Пока особых нареканий с моейс стороны не было.
K>Хотелось бы, чтобы make средство было бы: K>1. кроссплатформенным (без cygwin и прочего)
Официально поддреживается:
Windows Linux(x86) Linux(ia64) HP-UX IRIX64 SunOS 5.7(Sparc) AIX 1.5 OSF1 OSX(Darwin)
K>2. поддерживало бы хоть какие-нибудь репорты. сейчас приходится результаты получасовой компиляции прокручивать в консоли и искать где же там заругалось. K>ну и опционально хотелось бы возможность генерить проекты для visual studio, т.к. студия используется повсеместно как IDE и для отладки.
Есть фича CTest называется. Есть еще Darts. В общем здесь
Поддерживает purify и valgrind. Code coverage вроде тоже как-то прикручивают (сам еще не пробывал)
K>вообщем пришло время уходить с древнего make, но куда не очень понятно. K>Сейчас в качестве рабочего варианта рассматривается cmake (правда не знаю что там с репортами).
Нормально.
K>Кто работал с ant, scons или чем-то другим для больших с++ проектов, отзовитесь, плз, хотя бы поделиесь впечатлениями.
Еще у eao197mxx_ru. На руби написан.
Ну и в ACE-TAO есть довольно мощный генератор на Perl (здесь)
Здравствуйте, killua, Вы писали:
A>>Репорты... ну это зависит от того как сами makefile-ы написаны. Видимо у вас они написаны кривовато Для репортов команда echo рулит, а символ @ перед именем команды позволяет не выводить ее на консоль и не захламлять output. K>Под репортами я имел в виду несколько другое: скорее парсер outputа. Т.е. где какие warnings например. и т.п.
grep
A>>Генерить проекы для msvc из makefile-а можно используя тот же самый make. A>>Например так: make ... GENERATE_DSP=project.dsp <cr> K>Это 6ая студия. Если честно ее уже и на компах-то ни у кого в которе не осталось
dsp файлы конвертятся нормально, да и генерилку можно сделать для последней студии. Делов-то. Я просто идею продемонстрировать хотел.
K>Мы виндовую часть уже на whidbey компилим.
Здравствуйте, aka50, Вы писали:
A>Могу посоветовать CMake. www.cmake.org. Успешно использую его в своих проектах, а так же частично перевел ACE-TAO (без его тестов) и Ice.
генератор на Perl (здесь)
Здравствуйте, alsemm, Вы писали:
A>Здравствуйте, killua, Вы писали:
A>>>Репорты... ну это зависит от того как сами makefile-ы написаны. Видимо у вас они написаны кривовато Для репортов команда echo рулит, а символ @ перед именем команды позволяет не выводить ее на консоль и не захламлять output. K>>Под репортами я имел в виду несколько другое: скорее парсер outputа. Т.е. где какие warnings например. и т.п. A>grep
ну примерно этим сейчас народ и пользуется. но это неудобно.
A>>>Генерить проекы для msvc из makefile-а можно используя тот же самый make. A>>>Например так: make ... GENERATE_DSP=project.dsp <cr> K>>Это 6ая студия. Если честно ее уже и на компах-то ни у кого в которе не осталось A>dsp файлы конвертятся нормально, да и генерилку можно сделать для последней студии. Делов-то. Я просто идею продемонстрировать хотел.
Написать можно много чего, вопрос в том, будет ли начальство платить программеру деньги за то, что он пишет генерилку )
Если ты еще не определился, то глянь, пожалуйста, на мою разработку: mxx_ru. Это что-то похожее на scons, но написана на Ruby.
K>Хотелось бы, чтобы make средство было бы: K>1. кроссплатформенным (без cygwin и прочего)
Да. Сейчас сделана поддержка Win (vc, borland, mingw), cygwin (gcc), linux (gcc) и HP NonStop (c89).
Собственно, может быть портирован везде, где есть Ruby (а он много где есть ).
K>2. поддерживало бы хоть какие-нибудь репорты. сейчас приходится результаты получасовой компиляции прокручивать в консоли и искать где же там заругалось.
Этого нет. Но есть зачатки в поддержке unit-тестинга.
K>ну и опционально хотелось бы возможность генерить проекты для visual studio, т.к. студия используется повсеместно как IDE и для отладки.
Этого так же нет.
K>Кто работал с ant, scons или чем-то другим для больших с++ проектов, отзовитесь, плз, хотя бы поделиесь впечатлениями.
С большими проектами работает. Как раз на днях разбирался медленной компиляцией большого проекта (~750 .cpp файлов, ~190 проектных rb-файлов) под Linux. После исправления ошибки вообще никаких проблем не осталось.
Из плюсов еще могу привести начиличе документации на русском
Интересно будет любое мнение про mxx_ru (так же как и любая конструктивная критика по документации и/или подаче материала на сайте).
... << RSDN@Home 1.1.4 stable rev. 510>>
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, eao197, Вы писали:
E>Здравствуйте, killua, Вы писали:
K>>вообщем пришло время уходить с древнего make, но куда не очень понятно.
E>Может вот этот обзор поможет: Make alternatives
Спасибо, обязательно посмотрю mxx_ru. Но, т.к. начальство все за океаном, то обосновать будет трудновато
Здравствуйте, killua, Вы писали:
K>>>вообщем пришло время уходить с древнего make, но куда не очень понятно.
E>>Может вот этот обзор поможет: Make alternatives
K>Спасибо, обязательно посмотрю mxx_ru. Но, т.к. начальство все за океаном, то обосновать будет трудновато
Да, вероятно
Ну хотя бы свое мнение разскажи.
... << RSDN@Home 1.1.4 stable rev. 510>>
SObjectizer: <микро>Агентно-ориентированное программирование на C++.