From: <ai...@us...> - 2009-08-03 20:32:20
|
Revision: 10205 http://plplot.svn.sourceforge.net/plplot/?rev=10205&view=rev Author: airwin Date: 2009-08-03 20:32:05 +0000 (Mon, 03 Aug 2009) Log Message: ----------- The qt code that is generated by moc is now done just in one place (the include subdirectory) to remove a lot of duplication. The plplotqt library, dynamic qt device, and static qt device builds all now depend on these moc-generated results through a target-level dependency. Modified Paths: -------------- trunk/bindings/qt_gui/CMakeLists.txt trunk/drivers/CMakeLists.txt trunk/include/CMakeLists.txt trunk/src/CMakeLists.txt Modified: trunk/bindings/qt_gui/CMakeLists.txt =================================================================== --- trunk/bindings/qt_gui/CMakeLists.txt 2009-08-03 19:27:12 UTC (rev 10204) +++ trunk/bindings/qt_gui/CMakeLists.txt 2009-08-03 20:32:05 UTC (rev 10205) @@ -27,7 +27,6 @@ ${CMAKE_SOURCE_DIR}/drivers ${CMAKE_BINARY_DIR} ${CMAKE_BINARY_DIR}/include - ${CMAKE_CURRENT_BINARY_DIR} ) if(qt_COMPILE_FLAGS) set_source_files_properties( @@ -41,56 +40,12 @@ PROPERTIES COMPILE_FLAGS "-DUSINGDLL" ) endif(qt_COMPILE_FLAGS) - set(MOC_OPTIONS) - if(PLD_bmpqt) - list(APPEND MOC_OPTIONS -DPLD_bmpqt) - endif(PLD_bmpqt) - if(PLD_jpgqt) - list(APPEND MOC_OPTIONS -DPLD_jpgqt) - endif(PLD_jpgqt) - if(PLD_pngqt) - list(APPEND MOC_OPTIONS -DPLD_pngqt) - endif(PLD_pngqt) - if(PLD_ppmqt) - list(APPEND MOC_OPTIONS -DPLD_ppmqt) - endif(PLD_ppmqt) - if(PLD_tiffqt) - list(APPEND MOC_OPTIONS -DPLD_tiffqt) - endif(PLD_tiffqt) - if(PLD_svgqt) - list(APPEND MOC_OPTIONS -DPLD_svgqt) - endif(PLD_svgqt) - if(PLD_epsqt) - list(APPEND MOC_OPTIONS -DPLD_epsqt) - endif(PLD_epsqt) - if(PLD_pdfqt) - list(APPEND MOC_OPTIONS -DPLD_pdfqt) - endif(PLD_pdfqt) - if(PLD_qtwidget) - list(APPEND MOC_OPTIONS -DPLD_qtwidget) - endif(PLD_qtwidget) - if(PLD_extqt) - list(APPEND MOC_OPTIONS -DPLD_extqt) - endif(PLD_extqt) - file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/moc_files.h "/* Generated header file listing the moc generated files to include in plqt.cpp. */ \n#ifndef __MOC_FILES_H__\n#define __MOC_FILES_H__\n\n") - if(MOC_OPTIONS) - qt4_wrap_cpp( - QT_MOC_OUTFILES - ${CMAKE_SOURCE_DIR}/include/qt.h - OPTIONS ${MOC_OPTIONS} - ) - # CMake does not handle dependencies correctly for GENERATED source - # code that is #included by a header that is created at cmake time. - # Therefore, use fundamental means to force correct dependencies. - add_custom_target(moc_outfile_generated DEPENDS ${QT_MOC_OUTFILES}) - file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/moc_files.h "#include \"${QT_MOC_OUTFILES}\"\n") + if(ANY_QT_DEVICE) add_library(plplotqt${LIB_TAG} ${qt_SOURCE}) add_dependencies(plplotqt${LIB_TAG} moc_outfile_generated) - else(MOC_OPTIONS) - add_library(plplotqt${LIB_TAG} ${qt_SOURCE}) - endif(MOC_OPTIONS) - file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/moc_files.h "#endif /* __MOC_FILES_H__i */ \n") - + else(ANY_QT_DEVICE) + message(FATAL_ERROR "Internal build system inconsistency between ENABLE_qt true and ANY_QT_DEVICE false.") + endif(ANY_QT_DEVICE) #message("qt_LINK_FLAGS = ${qt_LINK_FLAGS}") target_link_libraries( plplotqt${LIB_TAG} Modified: trunk/drivers/CMakeLists.txt =================================================================== --- trunk/drivers/CMakeLists.txt 2009-08-03 19:27:12 UTC (rev 10204) +++ trunk/drivers/CMakeLists.txt 2009-08-03 20:32:05 UTC (rev 10205) @@ -30,7 +30,6 @@ ${CMAKE_SOURCE_DIR}/lib/qsastime ${CMAKE_SOURCE_DIR}/lib/nistcd ${CMAKE_BINARY_DIR} - ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_BINARY_DIR}/include ) @@ -84,55 +83,12 @@ ) endif(${SOURCE_ROOT_NAME}_COMPILE_FLAGS) if(SOURCE_ROOT_NAME STREQUAL "qt" AND NOT ENABLE_qt) - set(MOC_OPTIONS) - if(PLD_bmpqt) - list(APPEND MOC_OPTIONS -DPLD_bmpqt) - endif(PLD_bmpqt) - if(PLD_jpgqt) - list(APPEND MOC_OPTIONS -DPLD_jpgqt) - endif(PLD_jpgqt) - if(PLD_pngqt) - list(APPEND MOC_OPTIONS -DPLD_pngqt) - endif(PLD_pngqt) - if(PLD_ppmqt) - list(APPEND MOC_OPTIONS -DPLD_ppmqt) - endif(PLD_ppmqt) - if(PLD_tiffqt) - list(APPEND MOC_OPTIONS -DPLD_tiffqt) - endif(PLD_tiffqt) - if(PLD_svgqt) - list(APPEND MOC_OPTIONS -DPLD_svgqt) - endif(PLD_svgqt) - if(PLD_epsqt) - list(APPEND MOC_OPTIONS -DPLD_epsqt) - endif(PLD_epsqt) - if(PLD_pdfqt) - list(APPEND MOC_OPTIONS -DPLD_pdfqt) - endif(PLD_pdfqt) - if(PLD_qtwidget) - list(APPEND MOC_OPTIONS -DPLD_qtwidget) - endif(PLD_qtwidget) - if(PLD_extqt) - list(APPEND MOC_OPTIONS -DPLD_extqt) - endif(PLD_extqt) - file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/moc_files.h "/* Generated header file listing the moc generated files to include in plqt.cpp. */ \n#ifndef __MOC_FILES_H__\n#define __MOC_FILES_H__\n\n") - if(MOC_OPTIONS) - qt4_wrap_cpp( - QT_MOC_OUTFILES - ${CMAKE_SOURCE_DIR}/include/qt.h - OPTIONS ${MOC_OPTIONS} - ) - # CMake does not handle dependencies correctly for GENERATED source - # code that is #included by a header that is created at cmake time. - # Therefore, use fundamental means to force correct dependencies. - add_custom_target(moc_outfile_generated DEPENDS ${QT_MOC_OUTFILES}) - file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/moc_files.h "#include \"${QT_MOC_OUTFILES}\"\n") + if(ANY_QT_DEVICE) add_library(${SOURCE_ROOT_NAME} MODULE ${${SOURCE_ROOT_NAME}_SOURCE}) add_dependencies(${SOURCE_ROOT_NAME} moc_outfile_generated) - else(MOC_OPTIONS) - add_library(${SOURCE_ROOT_NAME} MODULE ${${SOURCE_ROOT_NAME}_SOURCE}) - endif(MOC_OPTIONS) - file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/moc_files.h "#endif /* __MOC_FILES_H__i */ \n") + else(ANY_QT_DEVICE) + message(FATAL_ERROR "Internal build system inconsistency. Attempt to build dynamic qt device when ANY_QT_DEVICE is false.") + endif(ANY_QT_DEVICE) else(SOURCE_ROOT_NAME STREQUAL "qt" AND NOT ENABLE_qt) add_library(${SOURCE_ROOT_NAME} MODULE ${${SOURCE_ROOT_NAME}_SOURCE}) endif(SOURCE_ROOT_NAME STREQUAL "qt" AND NOT ENABLE_qt) Modified: trunk/include/CMakeLists.txt =================================================================== --- trunk/include/CMakeLists.txt 2009-08-03 19:27:12 UTC (rev 10204) +++ trunk/include/CMakeLists.txt 2009-08-03 20:32:05 UTC (rev 10205) @@ -87,5 +87,54 @@ list(APPEND include_INSTALLED_HEADERS qt.h) endif(PLD_qtwidget OR PLD_extqt) +if(ANY_QT_DEVICE) + set(MOC_OPTIONS) + if(PLD_bmpqt) + list(APPEND MOC_OPTIONS -DPLD_bmpqt) + endif(PLD_bmpqt) + if(PLD_jpgqt) + list(APPEND MOC_OPTIONS -DPLD_jpgqt) + endif(PLD_jpgqt) + if(PLD_pngqt) + list(APPEND MOC_OPTIONS -DPLD_pngqt) + endif(PLD_pngqt) + if(PLD_ppmqt) + list(APPEND MOC_OPTIONS -DPLD_ppmqt) + endif(PLD_ppmqt) + if(PLD_tiffqt) + list(APPEND MOC_OPTIONS -DPLD_tiffqt) + endif(PLD_tiffqt) + if(PLD_svgqt) + list(APPEND MOC_OPTIONS -DPLD_svgqt) + endif(PLD_svgqt) + if(PLD_epsqt) + list(APPEND MOC_OPTIONS -DPLD_epsqt) + endif(PLD_epsqt) + if(PLD_pdfqt) + list(APPEND MOC_OPTIONS -DPLD_pdfqt) + endif(PLD_pdfqt) + if(PLD_qtwidget) + list(APPEND MOC_OPTIONS -DPLD_qtwidget) + endif(PLD_qtwidget) + if(PLD_extqt) + list(APPEND MOC_OPTIONS -DPLD_extqt) + endif(PLD_extqt) + if(MOC_OPTIONS) + qt4_wrap_cpp( + QT_MOC_OUTFILES + ${CMAKE_SOURCE_DIR}/include/qt.h + OPTIONS ${MOC_OPTIONS} + ) + # Use custom target to force correct dependencies in various directories. + # This target is used in three possible places (qt_gui, drivers, or src) + # depending on build options. + add_custom_target(moc_outfile_generated DEPENDS ${QT_MOC_OUTFILES}) + file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/moc_files.h "/* Generated header file listing the moc generated files to include in plqt.cpp. */ \n#ifndef __MOC_FILES_H__\n#define __MOC_FILES_H__\n\n") + file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/moc_files.h "#include \"${QT_MOC_OUTFILES}\"\n") + file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/moc_files.h "#endif /* __MOC_FILES_H__i */ \n") + else(MOC_OPTIONS) + message(FATAL_ERROR "Internal build system inconsistency between ANY_QT_DEVICE true and MOC_OPTIONS false.") + endif(MOC_OPTIONS) +endif(ANY_QT_DEVICE) install(FILES ${include_INSTALLED_HEADERS} DESTINATION ${INCLUDE_DIR}) Modified: trunk/src/CMakeLists.txt =================================================================== --- trunk/src/CMakeLists.txt 2009-08-03 19:27:12 UTC (rev 10204) +++ trunk/src/CMakeLists.txt 2009-08-03 20:32:05 UTC (rev 10205) @@ -102,50 +102,13 @@ #message("${SOURCE_ROOT_NAME}_SOURCE = ${${SOURCE_ROOT_NAME}_SOURCE}") list(APPEND plplot${LIB_TAG}_LIB_SRCS ${${SOURCE_ROOT_NAME}_SOURCE}) if(SOURCE_ROOT_NAME STREQUAL "qt") - set(MOC_OPTIONS) - if(PLD_bmpqt) - list(APPEND MOC_OPTIONS -DPLD_bmpqt) - endif(PLD_bmpqt) - if(PLD_jpgqt) - list(APPEND MOC_OPTIONS -DPLD_jpgqt) - endif(PLD_jpgqt) - if(PLD_pngqt) - list(APPEND MOC_OPTIONS -DPLD_pngqt) - endif(PLD_pngqt) - if(PLD_ppmqt) - list(APPEND MOC_OPTIONS -DPLD_ppmqt) - endif(PLD_ppmqt) - if(PLD_tiffqt) - list(APPEND MOC_OPTIONS -DPLD_tiffqt) - endif(PLD_tiffqt) - if(PLD_svgqt) - list(APPEND MOC_OPTIONS -DPLD_svgqt) - endif(PLD_svgqt) - if(PLD_epsqt) - list(APPEND MOC_OPTIONS -DPLD_epsqt) - endif(PLD_epsqt) - if(PLD_pdfqt) - list(APPEND MOC_OPTIONS -DPLD_pdfqt) - endif(PLD_pdfqt) - if(PLD_qtwidget) - list(APPEND MOC_OPTIONS -DPLD_qtwidget) - endif(PLD_qtwidget) - if(PLD_extqt) - list(APPEND MOC_OPTIONS -DPLD_extqt) - endif(PLD_extqt) - if(MOC_OPTIONS) - qt4_wrap_cpp( - QT_MOC_OUTFILES - ${CMAKE_SOURCE_DIR}/include/qt.h - OPTIONS ${MOC_OPTIONS} - ) - # message("QT_MOC_OUTFILES = ${QT_MOC_OUTFILES}") - set_source_files_properties( - ${QT_MOC_OUTFILES} - PROPERTIES GENERATED "ON" - ) - list(APPEND plplot${LIB_TAG}_LIB_SRCS ${QT_MOC_OUTFILES}) - endif(MOC_OPTIONS) + if(ANY_QT_DEVICE) + # For this case libplot must have a target dependency on the + # moc files generated in the binary include directory. + set(qt_dependency moc_outfile_generated) + else(ANY_QT_DEVICE) + message(FATAL_ERROR "Internal build system inconsistency. Attempt to build static qt device when ANY_QT_DEVICE is false.") + endif(ANY_QT_DEVICE) endif(SOURCE_ROOT_NAME STREQUAL "qt") # qt device driver code within libplplot has some symbols that need to be @@ -190,7 +153,7 @@ ${CMAKE_BINARY_DIR}/include ) add_library(plplot${LIB_TAG} ${plplot${LIB_TAG}_LIB_SRCS}) -add_dependencies(plplot${LIB_TAG} plhershey-unicode.h_built) +add_dependencies(plplot${LIB_TAG} plhershey-unicode.h_built ${qt_dependency}) set(LIB_INSTALL_RPATH ${LIB_DIR}) if(ENABLE_DYNDRIVERS) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |