СМейк:Как сгенерировать различные имена общих библиотек в зависимости от типа сборки

StackOverflow https://stackoverflow.com/questions/1774667

Вопрос

Я впервые использую 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.*")

Есть какие-нибудь идеи?Конечно, есть более простая конфигурация.Спасибо.

Это было полезно?
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top