--- /dev/null 2009-07-25 12:29:44.706468311 +0200 +++ CMakeLists.txt 2009-07-27 17:39:53.000000000 +0200 @@ -0,0 +1,151 @@ +cmake_minimum_required(VERSION 2.6) +project(QtStateMachines) + +# Setup Cmake +set(CMAKE_MODULE_PATH + ${PyQtStateMachines_SOURCE_DIR}/cmake/Modules + ) + +# Setup Qt4 +find_package(Qt4 REQUIRED) +set(QT_USE_QTDBUS 1) +set(QT_USE_QTGUI 1) +set(QT_USE_QTSHARED 1) +set(QT_USE_QTSCRIPT 1) +include(${QT_USE_FILE}) + +add_definitions(-DQT_STATEMACHINE_SOLUTION -DQT_NO_ANIMATION -DQT_SCRIPT_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED) + +include_directories( + ${CMAKE_CURRENT_SOURCE_DIR} + ${CMAKE_SOURCE_DIR}/src + ${QT_INCLUDE_DIR} + ${QT_QT_INCLUDE_DIR} + ${QT_QTCORE_INCLUDE_DIR} + ${CMAKE_CURRENT_BINARY_DIR}/src + ${CMAKE_CURRENT_BINARY_DIR} + ) + +link_directories(${CMAKE_CURRENT_SOURCE_DIR}) + +set(QtStateMachines_SOURCES + src/qabstractstate.cpp + src/qabstracttransition.cpp + src/qactionstate.cpp + src/qeventtransition.cpp + src/qfinalstate.cpp + src/qguistatemachine.cpp + src/qhistorystate.cpp + src/qscriptedstatemachine.cpp + src/qsignaltransition.cpp + src/qssmguiinvokers.cpp + src/qstateaction.cpp + src/qstate.cpp + src/qstatefinishedtransition.cpp + src/qstatemachine.cpp + src/qtransition.cpp +) + + +set(QtStateMachines_HEADERS + src/qabstractstate.h + src/qabstracttransition.h + src/qactionstate.h + src/qeventtransition.h + src/qfinalstate.h + src/qhistorystate.h + src/qscriptedstatemachine.h + src/qsignalevent.h + src/qsignaltransition.h + src/qstateaction.h + src/qstatefinishedevent.h + src/qstatefinishedtransition.h + src/qstate.h + src/qstatemachine.h + src/qtransition.h + src/qtstatemachineglobal.h +) + +MACRO(QT4_AUTOMOC_MY) + QT4_GET_MOC_FLAGS(_moc_INCS) + + SET(_matching_FILES ) + FOREACH (_current_FILE ${ARGN}) + + GET_FILENAME_COMPONENT(_abs_FILE ${_current_FILE} ABSOLUTE) + # if "SKIP_AUTOMOC" is set to true, we will not handle this file here. + # This is required to make uic work correctly: + # we need to add generated .cpp files to the sources (to compile them), + # but we cannot let automoc handle them, as the .cpp files don't exist yet when + # cmake is run for the very first time on them -> however the .cpp files might + # exist at a later run. at that time we need to skip them, so that we don't add two + # different rules for the same moc file + GET_SOURCE_FILE_PROPERTY(_skip ${_abs_FILE} SKIP_AUTOMOC) + + IF ( NOT _skip AND EXISTS ${_abs_FILE} ) + + FILE(READ ${_abs_FILE} _contents) + + GET_FILENAME_COMPONENT(_abs_PATH ${_abs_FILE} PATH) + + STRING(REGEX MATCHALL "# *include +[^ ]+\\.moc[\">]" + _match + "${_contents}") + IF(_match) + FOREACH (_current_MOC_INC ${_match}) + STRING(REGEX MATCH "[^ <\"]+\\.moc" _current_MOC "${_current_MOC_INC}") + GET_FILENAME_COMPONENT(_basename ${_current_MOC} NAME_WE) + IF(EXISTS ${_abs_PATH}/${_basename}.hpp) + SET(_header ${_abs_PATH}/${_basename}.hpp) + ELSE(EXISTS ${_abs_PATH}/${_basename}.hpp) + SET(_header ${_abs_PATH}/${_basename}.h) + ENDIF(EXISTS ${_abs_PATH}/${_basename}.hpp) + SET(_moc ${CMAKE_CURRENT_BINARY_DIR}/${_current_MOC}) + QT4_CREATE_MOC_COMMAND(${_header} ${_moc} "${_moc_INCS}" "") + MACRO_ADD_FILE_DEPENDENCIES(${_abs_FILE} ${_moc}) + message("DEPS: ${_abs_FILE} -> ${_moc}") + ENDFOREACH (_current_MOC_INC) + ENDIF(_match) + STRING(REGEX MATCHALL "# *include [\"<]moc_+[^ ]+\\.cpp[\">]" + _match + "${_contents}" + ) + IF(_match) + FOREACH (_current_MOC_INC ${_match}) + STRING(REGEX MATCH "[^ <\"_]+\\.cpp" _current_MOC "${_current_MOC_INC}") + GET_FILENAME_COMPONENT(_basename ${_current_MOC} NAME_WE) + IF(EXISTS ${_abs_PATH}/${_basename}.hpp) + SET(_header ${_abs_PATH}/${_basename}.hpp) + ELSE(EXISTS ${_abs_PATH}/${_basename}.hpp) + SET(_header ${_abs_PATH}/${_basename}.h) + ENDIF(EXISTS ${_abs_PATH}/${_basename}.hpp) + SET(_moc ${CMAKE_CURRENT_BINARY_DIR}/moc_${_current_MOC}) + QT4_CREATE_MOC_COMMAND(${_header} ${_moc} "${_moc_INCS}" "") + MACRO_ADD_FILE_DEPENDENCIES(${_abs_FILE} ${_moc}) + ENDFOREACH (_current_MOC_INC) + ENDIF(_match) + ENDIF ( NOT _skip AND EXISTS ${_abs_FILE} ) + ENDFOREACH (_current_FILE) +ENDMACRO(QT4_AUTOMOC_MY) + +add_library(StateMachineFramework SHARED + ${QtStateMachines_SOURCES} + ) + +QT4_AUTOMOC_MY(${QtStateMachines_SOURCES}) + +target_link_libraries(StateMachineFramework + ${QT_QTCORE_LIBRARY} + ${QT_QTGUI_LIBRARY} + ${QT_QTSCRIPT_LIBRARY} + ) + +set_target_properties(StateMachineFramework + PROPERTIES + OUTPUT_NAME + QtSolutions_StateMachineFramework-1.1 + VERSION 1.0.0 + SOVERSION 1.0.0) + +install(TARGETS StateMachineFramework DESTINATION lib${LIB_SUFFIX}) +install(FILES ${QtStateMachines_HEADERS} DESTINATION include/QtStateMachines/)