Мой вопрос похож на этот , но также касается статических библиотек:
У нас есть кросс-платформенная библиотека заголовков C ++, которая прекрасно работает под Windows / Linux / Os X, которая работаетна нескольких компиляторах и 32 и 64 бит.Когда у пользователя установлен zlib или libbz2, система сборки включает некоторые функции в библиотеке через #ifdefs
.
Чтобы облегчить нашим пользователям, мы хотим поставлять библиотеки, такие как zlib и libbz2 для Windows,либо в двоичном формате, либо как источник с несколькими щелчками мыши для установки.(На Linux и Mac Os X библиотеки могут быть просто установлены, поскольку системные пакеты фактически доступны в большинстве стандартных установок, насколько я могу судить).
Окончательное решение должно позволить пользователям использоватьКомпиляторы Visual C / C ++ 2005, 2008 и 2010 годов, а также MinGW на 32- и 64-битной Windows для простой связи с zlib и libbz2.Мы занимаемся только библиотеками Си в настоящее время и в обозримом будущем.
Библиотеки должны создаваться отдельно, мы не хотим интегрировать их в нашу систему сборки.
Что касаетсяЯ вижу, что здесь есть как минимум две степени свободы:
- Использовать ли статические библиотеки или библиотеки DLL.
- Отправлять ли двоичные библиотеки или разрешать пользователям создавать свои собственные библиотеки.
Еще один момент заключается в том, что пользователи должны иметь возможность связывать библиотеки как с отладочными, так и с оптимизированными версиями своей программы.Я не эксперт в программировании Windows, но, насколько я мог узнать в Интернете и от других разработчиков на работе, есть (необычное?) Различие между сборками отладки и выпусков на Windows.По-видимому, вы не можете связать отладочные программы с библиотеками релизов и наоборот.Это правильно?
Хорошо, так что позвольте мне еще раз обобщить все это для ясности: (1) Каков наилучший способ доставки библиотек зависимостей C для нашего компилятора C ++? (2)Если позже мы также захотим поставлять библиотеки C ++, разрешить пользователю сборку из исходного кода с каждым компилятором - это единственно возможный способ, верно?