CMakeLists.txt

changeset 92
fb0bb9a2a7e1
parent 91
409d9c7214be
child 93
4cfd0dd17fa5
--- 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()
+

mercurial