1

CMakeを使用するのはこれが初めてで、Qt4.x用のJSONパーサーであるQJSonを構築しようとしています。基本的に私が欲しいのは、ビルド構成に応じて異なる出力ライブラリ名をビルドすることです。マクロを使用${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.*")

何か案は?確かに、より単純な構成があります。ありがとうございました。

4

1 に答える 1

3

http://www.cmake.org/cmake/help/cmake-2-8-docs.html#prop_tgt:OUTPUT_NAME_CONFIG

于 2009-11-21T14:01:31.337 に答える