Cmake: كيفية إنشاء أسماء مكتبة مشتركة مختلفة اعتمادًا على نوع البناء

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