diff -r 409d9c7214be -r fb0bb9a2a7e1 CMakeLists.txt --- a/CMakeLists.txt Mon Mar 28 16:54:08 2022 +0200 +++ b/CMakeLists.txt Wed Mar 30 15:31:57 2022 +0200 @@ -4,7 +4,6 @@ PROJECT(bmsapp) CMAKE_MINIMUM_REQUIRED( VERSION 3.6 ) SET(bmsapp_EXECUTABLE "bmsapp") -MESSAGE( STATUS "Building bmsapp" ) # ===== Set application version ===== @@ -14,13 +13,22 @@ # Compile flags +option(BUILD_DESIGNER_PLUGINS "If on, you will only build and install the designer plugins." OFF) option(UPDATE_TRANSLATIONS "Enable rescanning sources to update .ts files" OFF) +IF( ${BUILD_DESIGNER_PLUGINS} ) + message(STATUS "Building designer plugins" ) +ELSE() + message(STATUS "Building bmsapp" ) +ENDIF() + # Automatically run moc on source files when necessary set(CMAKE_AUTOMOC ON) set(CMAKE_AUTOUIC ON) set(CMAKE_AUTORCC ON) +SET(CMAKE_INCLUDE_CURRENT_DIR ON) + SET( CMAKE_CXX_FLAGS_RELEASE "-Wall -ansi -pedantic -Wno-long-long -O2 -pipe" ) SET( CMAKE_CXX_FLAGS_DEBUG "-Wall -g3 -pipe" ) @@ -40,22 +48,32 @@ SET( TARGETPATH ${BINDIR} ) SET( DOCPATH ${DOCDIR} ) +SET( LIBPATH "$ENV{QT5DIR}" ) SET(ROOTDIR "${CMAKE_CURRENT_SOURCE_DIR}") SET(SRCDIR "${ROOTDIR}/src") SET(UIDIR "${ROOTDIR}/ui") +SET(DESIGNERDIR "${ROOTDIR}/designer") SET(DATADIR "${ROOTDIR}/data") SET(TRANSLATIONSDIR "${ROOTDIR}/translations") INCLUDE_DIRECTORIES(${SRCDIR}) INCLUDE_DIRECTORIES("${CMAKE_BINARY_DIR}/src") # In case of out-of-source build. +INCLUDE_DIRECTORIES("${CMAKE_BINARY_DIR}/designer") # ===== Find Qt5 ===== # Minimum versio 5.13 for debug messages. find_package(Qt5 5.13 REQUIRED COMPONENTS Core Widgets Network Sql LinguistTools PrintSupport WebSockets) +INCLUDE_DIRECTORIES(${Qt5Core_INCLUDE_DIRS}) +INCLUDE_DIRECTORIES(${Qt5Widgets_INCLUDE_DIRS}) +INCLUDE_DIRECTORIES(${Qt5Network_INCLUDE_DIRS}) +INCLUDE_DIRECTORIES(${Qt5Sql_INCLUDE_DIRS}) +INCLUDE_DIRECTORIES(${Qt5LinguistTools_INCLUDE_DIRS}) +INCLUDE_DIRECTORIES(${Qt5PrintSupport_INCLUDE_DIRS}) +INCLUDE_DIRECTORIES(${Qt5WebSockets_INCLUDE_DIRS}) -# PrintSupport Xml LinguistTools +# Xml # Some extra files for the "make clean" target. SET_PROPERTY( @@ -79,7 +97,57 @@ # ===== All sources ===== -set( SRCS +IF( ${BUILD_DESIGNER_PLUGINS} ) + + ADD_DEFINITIONS(${QT_DEFINITIONS}) + ADD_DEFINITIONS(-DQT_PLUGIN) + ADD_DEFINITIONS(-DQT_NO_DEBUG) + ADD_DEFINITIONS(-DQT_SHARED) + + INCLUDE_DIRECTORIES( + ${QT_INCLUDE_DIR} + ${SRCDIR} + ) + + LINK_DIRECTORIES( + ${QT_LIBRARY_DIR} + ) + + set( SRC_FILES + ${SRCDIR}/RangedSlider.cpp + ${SRCDIR}/nulldateedit.cpp + ) + + # By default only QtCore and QtGui are enabled + SET( QT_USE_QTDESIGNER TRUE ) + + set( MOC_FILES + ${SRCDIR}/RangedSlider.h + ${SRCDIR}/nulldateedit.h + ) + + set( PLUGIN_MOCS + # designer/*.h + ) + + set( PLUGIN_SRCS + # designer/*.cpp + ) + + add_library( bmsapp_plugins SHARED + ${SRC_FILES} + ${PLUGIN_SRCS} + ${MOC_FILES} + ${PLUGIN_MOCS} + ) + + TARGET_LINK_LIBRARIES( bmsapp_plugins + ${QT_LIBRARIES} + ) + +ELSE() + + set( SRCS ${SRCDIR}/main.cpp ${SRCDIR}/RecipesTree.cpp ${SRCDIR}/AboutDialog.cpp @@ -105,15 +173,16 @@ ${SRCDIR}/EditProfileStyle.cpp ${SRCDIR}/ProfileFerments.cpp ${SRCDIR}/EditProfileFerment.cpp + ${SRCDIR}/EditRecipe.cpp ${SRCDIR}/Setup.cpp ${SRCDIR}/Utils.cpp ${SRCDIR}/PrinterDialog.cpp ${SRCDIR}/MainWindow.cpp ${SRCDIR}/database/database.cpp ${SRCDIR}/nulldateedit.cpp -) + ) -set( HDRS + set( HDRS ${SRCDIR}/RecipesTree.h ${SRCDIR}/AboutDialog.h ${SRCDIR}/InventorySuppliers.h @@ -138,15 +207,16 @@ ${SRCDIR}/EditProfileStyle.h ${SRCDIR}/ProfileFerments.h ${SRCDIR}/EditProfileFerment.h + ${SRCDIR}/EditRecipe.h ${SRCDIR}/Setup.h ${SRCDIR}/Utils.h ${SRCDIR}/PrinterDialog.h ${SRCDIR}/MainWindow.h ${SRCDIR}/database/database.h ${SRCDIR}/nulldateedit.h -) + ) -set( UIS + set( UIS ${UIDIR}/AboutDialog.ui ${UIDIR}/EditSupplier.ui ${UIDIR}/EditFermentable.ui @@ -159,54 +229,70 @@ ${UIDIR}/EditProfileMash.ui ${UIDIR}/EditProfileStyle.ui ${UIDIR}/EditProfileFerment.ui + ${UIDIR}/EditRecipe.ui ${UIDIR}/MainWindow.ui -) + ) - -set( TS_FILES + set( TS_FILES ${TRANSLATIONSDIR}/bmsapp_en.ts # English ${TRANSLATIONSDIR}/bmsapp_nl.ts # Dutch -) + ) -set( SOURCE_FILES + set( SOURCE_FILES ${SRCS} ${HDRS} ${UIS} resources/icons.qrc resources/qdarkstyle/theme/style.qrc -) + ) + +ENDIF() # ===== Build the application ===== -# Run with cmake -DUPDATE_TRANSLATIONS=ON .. -# or cmake -DUPDATE_TRANSLATIONS=OFF .. +IF( ${BUILD_DESIGNER_PLUGINS} ) -if(UPDATE_TRANSLATIONS) - message("** parse sources for new translations") - qt5_create_translation(QM_FILES ${SOURCE_FILES} ${TS_FILES}) -else() - message("** update qm files") - qt5_add_translation(QM_FILES ${TS_FILES}) -endif() +ELSE() + + # Run with cmake -DUPDATE_TRANSLATIONS=ON .. + # or cmake -DUPDATE_TRANSLATIONS=OFF .. -SET( bmsapp_DESKTOP - ${ROOTDIR}/bmsapp.desktop -) - + if(UPDATE_TRANSLATIONS) + message("** parse sources for new translations") + qt5_create_translation(QM_FILES ${SOURCE_FILES} ${TS_FILES}) + else() + message("** update qm files") + qt5_add_translation(QM_FILES ${TS_FILES}) + endif() -add_executable(${bmsapp_EXECUTABLE} ${SOURCE_FILES} ${QM_FILES}) -target_link_libraries(${bmsapp_EXECUTABLE} Qt5::Core Qt5::Widgets Qt5::Network Qt5::Sql Qt5::PrintSupport Qt5::WebSockets) + SET( bmsapp_DESKTOP + ${ROOTDIR}/bmsapp.desktop + ) -# `make translations' -add_custom_target(translations DEPENDS ${QM_FILES}) + add_executable(${bmsapp_EXECUTABLE} ${SOURCE_FILES} ${QM_FILES}) + target_link_libraries(${bmsapp_EXECUTABLE} Qt5::Core Qt5::Widgets Qt5::Network Qt5::Sql Qt5::PrintSupport Qt5::WebSockets) + # `make translations' + add_custom_target(translations DEPENDS ${QM_FILES}) +ENDIF() # ===== Install the application ===== -install(TARGETS ${bmsapp_EXECUTABLE} - RUNTIME DESTINATION bin -) +IF( ${BUILD_DESIGNER_PLUGINS} ) + + INSTALL(TARGETS bmsapp_plugins + DESTINATION "${LIBPATH}/plugins/designer" + ) + +ELSE() -INSTALL( FILES ${bmsapp_DESKTOP} + install(TARGETS ${bmsapp_EXECUTABLE} + RUNTIME DESTINATION bin + ) + + INSTALL( FILES ${bmsapp_DESKTOP} DESTINATION "${DATAROOTDIR}/applications" -) + ) + +ENDIF() +