Включение проекта VB в проект VC++

Я ищу помощь с проблемой зависимости. Короче говоря, я включил проект makefile в большую рабочую область VC++, но подпроект всегда перестраивается, даже если в этом нет необходимости.

Детали

Я унаследовал большой проект, состоящий из нескольких различных модулей, включая (основной) исполняемый файл Visual C++ 6.0 и меньшую библиотеку DLL Visual Basic 6.0.

Сегодня он создается вручную, путем запуска каждой IDE и создания каждого компонента из собственной среды. Я хотел бы превратить это в сборку одним щелчком мыши из IDE VC++. (Конечная цель — экспорт make-файла, автоматизация всего процесса и создание ночных сборок.)

С этой целью я добавил проект Makefile в рабочее пространство VC++. Makefile создает DLL VB, вызывая компилятор VB из командной строки.

Проблема в том, что проект VB всегда перестраивается сам, добавляя несколько минут к процессу сборки. Я полагаю, что мог бы избежать этого, добавив все исходные файлы VB в качестве зависимостей, но это, вероятно, превратилось бы в проблему обслуживания, поскольку разработчикам потребовалось бы обновлять рабочее пространство VC++ каждый раз при изменении компонента VB.

Есть ли способ сделать процесс сборки более избирательным, чтобы VB запускался только тогда, когда DLL необходимо перестроить, за исключением добавления каждого исходного файла в проект VC++ в качестве зависимости?

Спасибо за ваши мысли!


person Adam Liss    schedule 10.01.2009    source источник


Ответы (1)


Вы можете выполнить сканирование зависимостей самостоятельно. Запускайте сборку VB только тогда, когда какой-либо исходный файл VB новее, чем выходные данные сборки VB (где вы можете рекурсивно сканировать с использованием подстановочных знаков, то есть без явной конфигурации). Возможно, вам придется дополнительно позаботиться о ссылках, которые использует проект VB.

Это, конечно, требует ручного написания make-файла. Поскольку VB6, по-видимому, не поддерживает проверку каких-либо зависимостей, я не могу придумать какое-либо решение, основанное исключительно на IDE (которое не требует упомянутой вами двойной бухгалтерии).

Поскольку вы только начинаете реализовывать ночные сборки для проекта VB, это, по-видимому, указывает на то, что этот проект может находиться в разработке/обслуживании в течение более длительного времени. Это более длительное время само по себе может указывать на перенос проекта VB на VB.NET, что значительно улучшает процесс сборки для проектов VB.

person gimpf    schedule 10.01.2009
comment
Спасибо. Makefiles вообще не проблема, и они позволят нам избежать перечисления отдельных файлов. FWIW, я автоматизирую, потому что мы потеряли основного разработчика проекта, и mgmt гарантирует, что это последний выпуск ... так что у нас будет как минимум еще 6 в течение следующих 2 лет. :-) - person Adam Liss; 10.01.2009