_W>Как самостоятельно автоматически строить зависимости? Нужно для велосипедного make, генерирующегося из vcproj.
У компилера как правило есть ключики, которые выдают депенденсы в формате понятном для make'ов; обычно есть и опции игнорирования стандартных header'ов.
В Intel'е и GCC такие опции есть, у Visual'а нет (может только в 8м -- давно его не смотрел).
У меня так всё и работает -- когда меняется .cpp, для него перегенерятся зависимости; зависимости include'яться в тот же makefile.
Здравствуйте, Глеб Алексеев, Вы писали:
ГА>Здравствуйте, _Winnie, Вы писали:
_W>>Как студия умудряется их разруливать? Неужели она препроцессирует каждый .cpp, что бы найти, от каких файлов он зависит? Но это бы работало слишком долго. _W>>Как самостоятельно автоматически строить зависимости? Нужно для велосипедного make, генерирующегося из vcproj. ГА>У cl есть ключик /showIncludes. Правда, придется как-то отличать стандартные файлы от файлов проекта.
ГА>А g++ вроде тоже должен быть аналогичный ключик. Насколько я знаю (а в сборке проектов без студии — я еще тот ламер), это обычный подход. Даже для ocaml есть утилита ocamldep, которая генерит зависимости в виде ГА>filename.cmo : filename.ml (cmo -объектник, ml — исходник).
ГА>а в конце мэйкфайла вставляешь include .depend и все.
У gcc список инклудов можно вежливо попросить следующими опциями:
-MD или -MMD (без системных инклудов)
Стандартные файлы отличать не надо, они ни кому не мешают, вот кусочек make файла:
%.o: %.cpp
g++ -c -MD $<
include $(wildcard *.d)
компилит все .cpp ставя все инклуды в зависимости
Для паралельной сборки у тогоже gmake есть опция -j 5, суть которой — выполнять независимые таргеты параллельно.
На больших проектах иногда в системе происходит переполнение таблицы открытых файлов, и gmake ведет себя непредсказуемо.
Решается проблема увеличением установленного лимита.
Здравствуйте, _Winnie, Вы писали:
_W>Надо посмотреть, может ли студия разрулить кошмар вроде
_W>#include BOOST_PP_STRINGIZE(BOOST__PP_CAT(algo, rithm))
Какие трудности? Студия проходится макропроцессором, и только потом компилит.
Здравствуйте, _Winnie, Вы писали:
_W>Как самостоятельно автоматически строить зависимости? Нужно для велосипедного make, генерирующегося из vcproj.
Посмотри может makedep подойдёт.
Пользовался — вроде ничего, правда, не знаю, справится ли с таким
_W>#include BOOST_PP_STRINGIZE(BOOST__PP_CAT(algo, rithm))
Здравствуйте, eao197, Вы писали:
E>Месье, вам нужна параллельная или распределенная компиляция?
Не знаю как кому, а нам нужна параллельная и распределенная разработка.
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, _Winnie, Вы писали:
_W>Как студия умудряется их разруливать? Неужели она препроцессирует каждый .cpp, что бы найти, от каких файлов он зависит? Но это бы работало слишком долго.
_W>Как самостоятельно автоматически строить зависимости? Нужно для велосипедного make, генерирующегося из vcproj.
Здравствуйте, _Winnie, Вы писали:
_W>Как студия умудряется их разруливать? Неужели она препроцессирует каждый .cpp, что бы найти, от каких файлов он зависит? Но это бы работало слишком долго.
_W>Как самостоятельно автоматически строить зависимости? Нужно для велосипедного make, генерирующегося из vcproj.
Смотрите boost 1.33 библиотека WAVE
есть даже готовый пример обработки прагм и поиска инклюженых файлов — "The quick_start sample"
В искустве летать есть один маленький секрет. Секрет этот в том,чтобы бросить себя изо всех сил на землю — и не попасть. Выберете погожий денек и попробуйте сами.