diff --git a/CMakeLists.txt b/CMakeLists.txt index 3e93619c80526c8278a8d4ac1b0f21809f1c2c72..66f7c0537a914821483e454a839fedda87935991 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,7 +25,10 @@ cmake_minimum_required(VERSION 3.2) # cmake_policy(SET CMP0025 NEW) #fixes error No known features for CXX compiler (on mac) # ENDIF (POLICY CMP0025) +# REMINDER: there is no CMAKE_PREFIX_PATH any more, make sure Qt is already in System PATH before building + project(JPSeditor LANGUAGES CXX) + set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) @@ -36,7 +39,7 @@ set(README_FILE "${CMAKE_SOURCE_DIR}/README.md") set(CMAKE_COLOR_MAKEFILE ON) set(JPSEDITOR_MAJOR_VERSION 0) set(JPSEDITOR_MINOR_VERSION 8) -set(JPSEDITOR_PATCH_VERSION 7) +set(JPSEDITOR_PATCH_VERSION 8) set(JPSEDITOR_VERSION ${JPSEDITOR_MAJOR_VERSION}.${JPSEDITOR_MINOR_VERSION}.${JPSEDITOR_PATCH_VERSION}) @@ -45,12 +48,7 @@ if("${CMAKE_BUILD_TYPE}" STREQUAL "") endif() message( STATUS "Generating ................................... ${PROJECT_NAME} (${JPSEDITOR_VERSION}) -- ${CMAKE_BUILD_TYPE}") -if(APPLE ) - set (CMAKE_INSTALL_PREFIX "/Applications") - set (CMAKE_PREFIX_PATH "/Applications/Qt/5.12.0/clang_64") -endif() -message(STATUS "${PROJECT_NAME} will be installed to ${CMAKE_INSTALL_PREFIX}") - +#message(STATUS "${PROJECT_NAME} will be installed to ${CMAKE_INSTALL_PREFIX}") # ------------------------- Begin Generic CMake Variable Logging ------------------ # the compiler used for C files @@ -58,19 +56,18 @@ message(STATUS "${PROJECT_NAME} will be installed to ${CMAKE_INSTALL_PREFIX}") # the compiler used for C++ files # message( STATUS "CMAKE_CXX_COMPILER: " ${CMAKE_CXX_COMPILER} ) -# ------------------------- End of Generic CMake Variable Logging ------------------ - -set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH}) - -# put in cmake cmake scripts if any -# message(STATUS "CMAKE_MODULE_PATH" ${CMAKE_MODULE_PATH}) +# ------------------------- End of Generic CMake Variable Logging ------------------ +# put in cmake cmake scripts if any; not necessary now +#set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH}) +#message(STATUS "CMAKE_MODULE_PATH" ${CMAKE_MODULE_PATH}) #------------------ set important directories -------------------- set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/bin") set(EXECUTABLE_OUTPUT_PATH "${CMAKE_SOURCE_DIR}/bin") # Debug messages message( STATUS "CMAKE_BINARY_DIR .............................. " ${CMAKE_BINARY_DIR} ) +message( STATUS "CMAKE_CURRENT_BINARY_DIR ...................... " ${CMAKE_CURRENT_BINARY_DIR} ) message( STATUS "CMAKE_SOURCE_DIR .............................. " ${CMAKE_SOURCE_DIR} ) message( STATUS "CMAKE_CURRENT_SOURCE_DIR ...................... " ${CMAKE_CURRENT_SOURCE_DIR} ) message( STATUS "CMAKE_RUNTIME_OUTPUT_DIRECTORY ................ " ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} ) @@ -102,43 +99,52 @@ set( SRCS src/main.cpp src/GraphicView.cpp src/graphicscene.cpp - src/widgets/roomwidget.cpp src/rooms.cpp src/datamanager.cpp + src/global.cpp + + # JPSelement src/jpscrossing.cpp src/jpsLineItem.cpp src/jpsexit.cpp src/jpsobstacle.cpp src/jpslandmark.cpp - src/widgets/widgetlandmark.cpp - src/widgets/widgetsettings.cpp src/jpsconnection.cpp src/jpsregion.cpp - src/widgets/settingdialog.cpp - src/widgets/inifilewidget.cpp - src/widgets/snappingoptions.cpp - src/jpssource.cpp - src/widgets/sourcewidget.cpp + src/jpssource.cpp src/jpsgoal.cpp - src/widgets/goalwidget.cpp - src/global.cpp + + # JPSmodel src/models/jpselementlistmodel.cpp src/models/jpssourcelistmodel.cpp src/models/jpsgoallistmodel.cpp + + # reader for xml src/XML/goalreader.cpp src/XML/sourcereader.cpp + # for widgets + src/widgets/roomwidget.cpp + src/widgets/goalwidget.cpp + src/widgets/settingdialog.cpp + src/widgets/inifilewidget.cpp + src/widgets/snappingoptions.cpp + src/widgets/widgetlandmark.cpp + src/widgets/widgetsettings.cpp + src/widgets/sourcewidget.cpp + + # for datamanager dxflib/src/dl_writer_ascii.cpp dxflib/src/dl_dxf.cpp + + # for undo feature src/UndoFramework/action.cpp src/UndoFramework/actionstack.cpp src/UndoFramework/lineaction.cpp + + # for roomdefinition feature src/AutomaticRoomIdentification/roomdefinition.cpp src/AutomaticRoomIdentification/roomidentification.cpp - src/tinyxml/tinystr.cpp - src/tinyxml/tinyxml.cpp - src/tinyxml/tinyxmlerror.cpp - src/tinyxml/tinyxmlparser.cpp ) # all header files that should be treated with moc set( HDR @@ -146,33 +152,36 @@ set( HDR src/mainWindow.h src/GraphicView.h src/graphicscene.h - src/widgets/roomwidget.h + src/elementtype.h + src/global.h src/rooms.h src/datamanager.h + src/jpscrossing.h src/jpsLineItem.h src/jpsexit.h src/jpsobstacle.h src/jpslandmark.h - src/widgets/widgetlandmark.h - src/widgets/widgetsettings.h src/jpsconnection.h src/jpsregion.h - src/dtrace.h + src/jpssource.h + src/jpsgoal.h + + src/XML/goalreader.h + src/XML/sourcereader.h + + src/models/jpsgoallistmodel.h + src/models/jpselementlistmodel.h + src/models/jpssourcelistmodel.h + + src/widgets/widgetlandmark.h + src/widgets/widgetsettings.h src/widgets/settingdialog.h src/widgets/inifilewidget.h src/widgets/snappingoptions.h - src/jpssource.h src/widgets/sourcewidget.h src/widgets/goalwidget.h - src/elementtype.h - src/global.h - src/models/jpselementlistmodel.h - src/models/jpssourcelistmodel.h - src/jpsgoal.h - src/models/jpsgoallistmodel.h - src/XML/goalreader.h - src/XML/sourcereader.h + src/widgets/roomwidget.h dxflib/src/dl_writer_ascii.h dxflib/src/dl_writer.h @@ -189,11 +198,10 @@ set( HDR src/UndoFramework/action.h src/UndoFramework/actionstack.h src/UndoFramework/lineaction.h + src/AutomaticRoomIdentification/roomID.h src/AutomaticRoomIdentification/roomdefinition.h src/AutomaticRoomIdentification/roomidentification.h - src/tinyxml/tinystr.h - src/tinyxml/tinyxml.h ) # *.ui files @@ -214,7 +222,7 @@ set( RCS Resources/resources.qrc ) - +# Find includes in corresponding build directories set(CMAKE_INCLUDE_CURRENT_DIR ON) # Instruct CMake to run moc automatically when needed. @@ -234,12 +242,7 @@ endif() message(STATUS "Searching for Qt version ...................... " ${DESIRED_QT_VERSION}) # find packages according to qt version if("${DESIRED_QT_VERSION}" STREQUAL "5") - FIND_PACKAGE(Qt5Widgets REQUIRED) - # - these find_packages are not necessary? ----------- - FIND_PACKAGE(Qt5Core REQUIRED) - FIND_PACKAGE(Qt5Gui REQUIRED) - FIND_PACKAGE(Qt5Network REQUIRED) - FIND_PACKAGE(Qt5Xml REQUIRED) + find_package(Qt5Widgets REQUIRED) #----------------------------------------------------- set(QT5_INSTALLED TRUE) set(QTVERSION 5) @@ -257,7 +260,6 @@ if( ${QTVERSION} VERSION_GREATER 6 OR ${QTVERSION} VERSION_LESS 3) message(FATAL_ERROR "QT version " ${QTVERSION} " not supported. Try 4 or 5") endif() - # if(QT5_INSTALLED) # message(STATUS "QT5_INSTALLED: " ${QT5_INSTALLED}) # elseif(QT4_INSTALLED ) @@ -296,29 +298,28 @@ elseif( ${QT5_INSTALLED}) message(STATUS "Working with Qt5") # http://www.kdab.com/using-cmake-with-qt-5/ set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Widgets_EXECUTABLE_COMPILE_FLAGS}" ) - qt5_wrap_ui( UI_HDRS ${UIS} ) qt5_add_resources( RCS ${RCS} ) - #qt5_use_package(JPSeditor Widgets) - ADD_EXECUTABLE( ${PROJECT_NAME} MACOSX_BUNDLE WIN32 + add_executable( ${PROJECT_NAME} MACOSX_BUNDLE WIN32 ${SRCS} ${MOC_HDRS} ${UI_HDRS} ${RCS} ) - qt5_use_modules(${PROJECT_NAME} Widgets) - target_link_libraries(${PROJECT_NAME} ${Qt5Widgets_LIBRARIES}) + + target_link_libraries(${PROJECT_NAME} ${Qt5Widgets_LIBRARIES}) else() message(FATAL_ERROR "QT NOT FOUND - ABORT") endif() +# add icon file into bundle IF(APPLE) - SET(MACOSX_BUNDLE_ICON_FILE jupedsim.icns) - SET_SOURCE_FILES_PROPERTIES(${CMAKE_CURRENT_SOURCE_DIR}/icons/jupedsim.icns PROPERTIES MACOSX_PACKAGE_LOCATION Resources) + SET(MACOSX_BUNDLE_ICON_FILE jpseditor.icns) + SET_SOURCE_FILES_PROPERTIES(${CMAKE_CURRENT_SOURCE_DIR}/Resources/jpseditor.icns PROPERTIES MACOSX_PACKAGE_LOCATION + Resources) ENDIF(APPLE) - SET_TARGET_PROPERTIES( ${PROJECT_NAME} PROPERTIES MACOSX_BUNDLE TRUE) #---------------------------------------------------------------------- # enable as many warnings as possible @@ -333,8 +334,6 @@ if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang") # set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -DNDEBUG") endif() - - if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") message(STATUS "Using compiler ................................ Clang (${CMAKE_CXX_COMPILER_VERSION})") endif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") @@ -343,7 +342,6 @@ if(CMAKE_COMPILER_IS_GNUCXX) endif(CMAKE_COMPILER_IS_GNUCXX) if(CMAKE_BUILD_TYPE MATCHES Debug) - set(CMAKE_CXX_LDFLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fprofile-arcs -ftest-coverage") set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DTRACE_LOGGING") message(STATUS "Debug flags: " ${CMAKE_CXX_FLAGS} " " ${CMAKE_CXX_FLAGS_DEBUG} ) @@ -400,7 +398,6 @@ endif() IF(APPLE) # set how it shows up in the Info.plist file - SET(MACOSX_EDIT_ICON jupedsim.icns) SET(MACOSX_BUNDLE_COPYRIGHT "Copyright (c) 2015-2019 Forschungszentrum Juelich. All rights reserved.") SET(MACOSX_BUNDLE_BUNDLE_NAME "${PROJECT_NAME}") SET(MACOSX_BUNDLE_BUNDLE_VERSION "${JPSEDITOR_VERSION}")