У меня большое приложение, использующее много статических библиотек, которое не зависит от платформы и развернуто под Windows и Linux.
Все статические библиотеки и сам main () скомпилированы с двумя определениями:
-DVERSION=1.0.0 -DBUILD_DATE=00.00.0000
Эти определения используются макросами внутри каждой статической библиотеки и внутри основной для хранения текущей версии библиотеки внутри класса, подобного реестру.
В GCC / Linux это работает очень хорошо - вы можете перечислить все связанные модули и отобразить их реальную версию и дату сборки, например ::10000
- ImageReader 0.5.4 (12.01.2010)
- Компресс 1.0.1 (03.01.2010)
- SQLReader 0.3.3 (22.12.2009)
Но: когда я связываю точно такой же код с VisualStudio 2005 SP1, я получаю только версию и дату сборки последнего скомпилированного модуля:
- ImageReader 0.5.4 (12.01.2010)
- Компресс 0.5.4 (12.01.2010)
- SQLReader 0.5.4 (12.01.2010)
У кого-нибудь есть идея? Это проблема «оптимизации» компоновщика VC ++?