Я думаю, что boost справляется с этим, называя файлы .lib после конкретной платформы. Мне нравится включать следующие части информации:
- основная версия компилятора (то есть "vc80", "vc91" и т. Д.)
- версия времени выполнения (то есть "mt", "mdd" и т. Д.)
- версия вашей библиотеки (т. Е. "1.0", "2.1.1234" и т. Д.)
Например, если ваша библиотека называется «NetInfo», это версия 1.2.3, она была динамически связана с отладкой CRT и была построена с помощью Visual Studio 2005:
NetInfo_1.2.3_vc80_mdd
Единственное, о чем нужно беспокоиться, это о том, как люди будут использовать вашу библиотеку: статически или динамически. Я обычно делаю это следующим образом:
Если ваша библиотека связана с динамическим CRT, ваша библиотека предоставляется в виде DLL; в противном случае ваша библиотека предоставляется как статическая библиотека. Причина заключается в том, что если люди динамически связываются с CRT, то можно предположить, что они не против динамически связываться с вашей библиотекой. Если вы хотите предоставить обе опции, я обычно добавляю «s» в конце, чтобы указать, что это статическая библиотека; отсутствие «s» указывает на то, что это динамическая библиотека.
Пример:
NetInfo_1.2.3_vc80_mdds.lib - static library, links with dynamic debug CRT
NetInfo_1.2.3_vc80_mds.lib - static library, links with dynamic release CRT
NetInfo_1.2.3_vc80_mtds.lib - static library, links with static debug CRT
NetInfo_1.2.3_vc80_mts.lib - static library, links with static release CRT
NetInfo_1.2.3_vc80_mdd.lib - import library, links with dynamic debug CRT
NetInfo_1.2.3_vc80_mdd.dll - dynamic library, links with dynamic debug CRT
NetInfo_1.2.3_vc80_md.lib - import library, links with dynamic release CRT
NetInfo_1.2.3_vc80_md.dll - dynamic library, links with dynamic release CRT
NetInfo_1.2.3_vc80_mtd.lib - import library, links with static debug CRT
NetInfo_1.2.3_vc80_mtd.dll - dynamic library, links with static debug CRT
NetInfo_1.2.3_vc80_mt.lib - import library, links with static release CRT
NetInfo_1.2.3_vc80_mt.dll - dynamic library, links with static release CRT
Этот метод - немного дополнительная работа, но он охватывает все основы. Если вы предоставляете разные платформы, вы также должны вставить туда «x86» и «x64».
Затем в вашем заголовочном файле вы можете использовать макросы _WIN64, _DLL и _DEBUG, чтобы выяснить, какую библиотеку использовать. Если вы сделаете все возможное и предоставите статические и динамические библиотеки для всех параметров, вам потребуется дополнительное определение, например NETINFO_USE_STATIC_LIB. чтобы определить, стоит ли использовать динамический или статический аромат.
Этот метод позволяет хранить все файлы в одном каталоге и позволяет узнать подробности, просто взглянув на имя файла. Недостатком является то, что некоторые люди могут жаловаться на загрузку многословно названной dll вместо простого «NetInfo.dll» (особенно, если они используют LoadLibrary), но это действительно небольшая проблема. Кажется, не удерживает людей от использования наддува.