СМейк:Как сгенерировать различные имена общих библиотек в зависимости от типа сборки
-
21-09-2019 - |
Вопрос
Я впервые использую CMake, и я пытаюсь создать QJson, анализатор JSON для Qt 4.x.В основном я хочу создать разные имена выходных библиотек в зависимости от конфигурации сборки.Я использую ${CMAKE_BUILD_TYPE}
макрос для генерации различных целевых объектов (qjson.lib/qjson.dll и qjsond.lib/qjsond.dll ).Похоже, что решение VS 2008 всегда создается с именем qjson (в отладочных сборках qjsond отсутствует).
Мой ужасный раздел директив Makefile выглядит следующим образом:
IF("${CMAKE_BUILD_TYPE}" MATCHES "^Rel.*")
add_library ( qjson SHARED ${qjson_SRCS} ${qjson_MOC_SRCS})
target_link_libraries( qjson ${QT_LIBRARIES})
set_target_properties( qjson PROPERTIES
VERSION ${QJSON_LIB_MAJOR_VERSION}.
${QJSON_LIB_MINOR_VERSION}.${QJSON_LIB_PATCH_VERSION}
SOVERSION ${QJSON_LIB_MAJOR_VERSION}
DEFINE_SYMBOL QJSON_MAKEDLL
)
INSTALL(TARGETS qjson
LIBRARY DESTINATION ${LIB_INSTALL_DIR}
RUNTIME DESTINATION bin
ARCHIVE DESTINATION ${LIB_INSTALL_DIR}
)
ENDIF("${CMAKE_BUILD_TYPE}" MATCHES "^Rel.*")
IF("${CMAKE_BUILD_TYPE}" MATCHES "^Deb.*")
add_library ( qjsond SHARED ${qjson_SRCS} ${qjson_MOC_SRCS})
target_link_libraries( qjsond ${QT_LIBRARIES})
set_target_properties( qjsond PROPERTIES
VERSION ${QJSON_LIB_MAJOR_VERSION}.
${QJSON_LIB_MINOR_VERSION}.
${QJSON_LIB_PATCH_VERSION}
SOVERSION ${QJSON_LIB_MAJOR_VERSION}
DEFINE_SYMBOL QJSON_MAKEDLL
)
INSTALL(TARGETS qjsond
LIBRARY DESTINATION ${LIB_INSTALL_DIR}
RUNTIME DESTINATION bin
ARCHIVE DESTINATION ${LIB_INSTALL_DIR}
)
ENDIF("${CMAKE_BUILD_TYPE}" MATCHES "^Deb.*")
Есть какие-нибудь идеи?Конечно, есть более простая конфигурация.Спасибо.
Не связан с StackOverflow