Я думаю, что 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, чтобы определить, какую библиотеку использовать. Если вы сделаете все возможное и предоставите статические и динамические библиотеки для всех параметров, вам потребуется дополнительное определение, например чтобы привлечь динамический или статический аромат.
Этот метод позволяет хранить все файлы в одном каталоге и позволяет узнать подробности, просто взглянув на имя файла. Недостатком является то, что некоторые люди могут жаловаться на загрузку dll с подробным названием вместо простой «NetInfo.dll» (особенно если они используют LoadLibrary), но это действительно незначительная проблема. Кажется, это не удерживает людей от использования наддува.
person
Luke
schedule
18.03.2010