CMakeの:どのようにビルドの種類に応じて異なる共有ライブラリ名を生成します

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

質問

このはCMakeのを使用して私の最初の時間であり、私はQJSon、Qtの4.xのためのJSONパーサーを構築しようとしています私は基本的に欲しいのはビルド構成に応じて、異なる出力ライブラリ名を構築することです。私は(qjson.lib / qjson.dllとqjsond.lib / qjsond.dll)異なるターゲットを生成する${CMAKE_BUILD_TYPE}マクロを使用しています。 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