Мы имеем большой проект (на С++), часть кода которого надо опубликовать.
Эта часть, назовём её "конечный проект", использует много-много библиотек, публиковать которые не надо. А надо только предоставить к ним интерфейсы для компиляции.
Поэтому мы поставили перед собой такие задачи
(задачи должны выполняться регулярно, например 1 раз в квартал)
1. Определить все библиотеки, которые используются нашим конечным проектом в рамках большого проекта. Для всех используемых библиотек надо определить классы и функции, которы мы импортируем.
На основе этой информации мы могли бы
— уменьшить объём внешних библиотек, например , отказавшись от какого-то кода.
— получить первичную информацию о том, какие классы мы импортируем из библиотек для конечного проекта.
2. Выделить (ИЛИ СГЕНЕРИРОВАть) множество классов и их хидеров библиотечных интерфейсов, которые позволили бы скомпилировать конечный проект, оставив непубликуемые модули за кадром.
Ввиду регулярности выполнения поставленной задачи напрашивается её любая автоматизация.
Сталкивался ли кто-либо с подобными задачами? Может ли помочь идеологическим советом или ссылкой на продукт(ы)?
Re: Найти все импортируемые функии и классы проекта
__>Сталкивался ли кто-либо с подобными задачами? Может ли помочь идеологическим советом или ссылкой на продукт(ы)?
Выделить одного-двух человек, которые будут играть во "внешнюю компанию", пусть они собирают конечный проект и сообщают, какие промежуточные компоненты оказались им доступны. Другие люди пусть заменяют исходники на объявления функций. Как это сделать технически, спрашивайте в форуме про С++.
Re: Найти все импортируемые функии и классы проекта
Здравствуйте, t_t_m, Вы писали:
__>Здравствуйте.
__>Мы имеем большой проект (на С++), часть кода которого надо опубликовать. __>Эта часть, назовём её "конечный проект", использует много-много библиотек, публиковать которые не надо. А надо только предоставить к ним интерфейсы для компиляции. __>Поэтому мы поставили перед собой такие задачи __>(задачи должны выполняться регулярно, например 1 раз в квартал) __>1. Определить все библиотеки, которые используются нашим конечным проектом в рамках большого проекта. Для всех используемых библиотек надо определить классы и функции, которы мы импортируем. __>На основе этой информации мы могли бы __> — уменьшить объём внешних библиотек, например , отказавшись от какого-то кода. __> — получить первичную информацию о том, какие классы мы импортируем из библиотек для конечного проекта.
__>2. Выделить (ИЛИ СГЕНЕРИРОВАть) множество классов и их хидеров библиотечных интерфейсов, которые позволили бы скомпилировать конечный проект, оставив непубликуемые модули за кадром.
__>Ввиду регулярности выполнения поставленной задачи напрашивается её любая автоматизация.
__>Сталкивался ли кто-либо с подобными задачами? Может ли помочь идеологическим советом или ссылкой на продукт(ы)?
Предполагаю, что речь идет о VC++.
В VS есть утилита dumpbin, которая выдает листинг всего импорта или экспорта для модуля : имена библиотек и имена функций (методов).
Пишем небольшую утилиту, которая анализирует этот листинг. Для имен функций можно попробовать UnDecorateSymbolName, она может вернуть полную сигнатуру метода. Результаты отправляем в некий новый файл или файлы.
Далее итерационно по всем экспортируемым библиотекам или по тем, которые нужно.
Если есть кому поручить написание такой утилиты — думаю, работы от силы на месяц-два.