минимальное дерево зависимостей сборки - PullRequest
0 голосов
/ 22 сентября 2009

В настоящее время я использую IDE, которая создает проекты на c ++ для нескольких платформ (win32, windows mobile, symbian и т. Д.). Эта IDE не хранит список зависимостей сборки и просто перестраивает весь проект каждый раз. Это напрасно тратит наше время, что заставило нас задуматься о внедрении более умного процесса сборки: Файлы cpp будут перекомпилированы, только если их даты изменения были обновлены или если заголовки, которые они включают (рекурсивно), были обновлены.

Я нашел Perl-скрипт cinclude2dot.pl, который выводит зависимости из каталога проекта. Этот вывод может использоваться graphviz для создания дерева зависимостей. Проблемы заключаются в следующем: (а) этот скрипт ненадежен (он не анализирует комментарии "/ *"), и (б) он работает в одном каталоге, а наши заголовки и источники размещены в нескольких каталогах.

Мои вопросы: 1. Существует ли аналогичный скрипт / пакет / программа, который может выводить зависимости заголовка более эффективно? 2. Есть ли что-нибудь кроме изменения дат и включения зависимостей, которые я должен учитывать при кодировании "более умного" процесса сборки?

Будут и другие идеи! спасибо!

Ответы [ 4 ]

2 голосов
/ 22 сентября 2009

Если ваша IDE создает ваш проект с помощью GCC, то вы можете использовать встроенную в GCC генерацию зависимостей. Он выводит правила, подходящие для включения в стандартный make-файл.

Они активируются путем передачи семейства флагов -M в командной строке GCC. См. Документацию в руководстве по GCC .

.

Однако, возможно, стоит подумать о переходе на более совершенную IDE (если это возможно), которая может сделать такую ​​вещь для вас, вместо того, чтобы тратить свое время на попытки привить функциональность к тому, что похоже на недостаточно мощную IDE. 1008 *

1 голос
/ 22 сентября 2009

gcc может сделать это с помощью опции -MM, и затем вы можете использовать эти зависимости в make-файле, как объяснено здесь . Даже если вы не хотите использовать gcc для компиляции вашего фактического проекта, вы можете использовать его для вычисления дерева зависимостей.

0 голосов
/ 23 сентября 2009

Спасибо за помощь, ваша помощь!

Я нашел программу с открытым исходным кодом, которая называется "fastdep". он плохо документирован, но поиграв с ним несколько часов, я наконец получил то, что мне нужно.

0 голосов
/ 22 сентября 2009

Я также заметил параметр / showIncludes в cl.exe (я использую VS2008 для win32 и выигрываю мобильные отладочные сборки) «Проблема» в том, что cl.exe компилирует мой .cpp, где я просто хочу, чтобы он отображал операторы #include. Есть ли флаг, который заставляет cl.exe не компилировать код, а отображать только список включения?

...