Я хочу создать статическую и общую библиотеку, используя CMake для создания среды сборки. Кроме того, он должен создать ANSI
и версию UNICODE
.CMake создание общей и статической библиотеки с различными определениями
Я нашел объявление: Is it possible to get CMake to build both a static and shared version of the same library?
, который сказал мне, что я могу использовать несколько add_library
заявления для достижения этой цели. Когда я это пробовал, он прекрасно создает библиотеки, но публикация не говорит мне, как устанавливать разные параметры -D
в зависимости от того, какая версия построена.
Мои CMakeLists.txt
в настоящее время выглядит следующим образом:
list(APPEND SUPPORT_SOURCE
dll_main.cpp
)
add_definitions(-DBUILD_SUPPORT_DLL)
add_library(support SHARED ${SUPPORT_SOURCE})
add_library(support_s STATIC ${SUPPORT_SOURCE})
add_library(support_u SHARED ${SUPPORT_SOURCE})
add_library(support_su STATIC ${SUPPORT_SOURCE})
В конце концов, когда я строй DLL, функция нуждается в __declspec(dllexport)
декларации, в которой она не должна иметь в статических версиях. Кроме того, чтобы построить вариант UNICODE
, мне нужно пройти -DUNICODE
.
Поэтому мне нужно знать, какая версия построена и использовать для нее соответствующие флаги сборки для различных целей.
Другое дело, что я не понимаю, как я могу создавать отладочные сборки с другим именем. Обычно я использую шаблон libname.lib
и libname_d.lib
, поэтому я могу иметь все возможные версии в одном каталоге для ссылки.