11cmake_minimum_required (VERSION  3.16)
22
3- # Read version from file to set the project version 
3+ #============================================================================= 
4+ # Project Metadata and Versioning 
5+ #============================================================================= 
46set (VERSION_FILE "${CMAKE_CURRENT_SOURCE_DIR} /resources/version.conf" )
57if (EXISTS  "${VERSION_FILE} " )
68    file (READ "${VERSION_FILE} "  PROJECT_VERSION_STRING)
@@ -13,54 +15,85 @@ endif()
1315project (bikram-calendar VERSION  ${PROJECT_VERSION_STRING}  LANGUAGES CXX)
1416message (STATUS  "Configuring bikram-calendar version: ${PROJECT_VERSION} " )
1517
18+ #============================================================================= 
19+ # C++ Standard and Qt Setup 
20+ #============================================================================= 
21+ set (CMAKE_CXX_STANDARD 17)
22+ set (CMAKE_CXX_STANDARD_REQUIRED ON )
1623set (CMAKE_AUTOMOC  ON )
1724set (CMAKE_AUTORCC ON )
1825set (CMAKE_AUTOUIC ON )
19- set (CMAKE_CXX_STANDARD 17)
20- set (CMAKE_CXX_STANDARD_REQUIRED ON )
2126
22- find_package (Qt6 COMPONENTS
27+ find_package (Qt6 REQUIRED  COMPONENTS
2328    Core
2429    Gui
25-     Qml
26-     Quick
2730    Widgets
28-     QuickControls2
31+     Quick
32+     Qml
2933    PrintSupport
30-     REQUIRED )
34+ )
3135
3236qt_policy(SET QTP0001 NEW)
3337qt_policy(SET QTP0004 NEW)
3438
35- qt_add_executable(bikram-calendar
39+ #============================================================================= 
40+ # Run Versioning Script Before Build 
41+ #============================================================================= 
42+ execute_process (
43+     COMMAND  bash "${CMAKE_CURRENT_SOURCE_DIR} /update_version.sh" 
44+     WORKING_DIRECTORY  "${CMAKE_CURRENT_SOURCE_DIR} " 
45+     RESULT_VARIABLE  VERSION_SCRIPT_RESULT
46+ )
47+ if (NOT  VERSION_SCRIPT_RESULT EQUAL  0)
48+     message (WARNING "The version update script failed to run. Version info may be stale or incorrect." )
49+ endif ()
50+ 
51+ #============================================================================= 
52+ # Source Files 
53+ #============================================================================= 
54+ set (SOURCES 
3655    main.cpp
3756    autostartmanager.cpp
3857    tooltipmanager.cpp
3958    helper.cpp
40-     resources.qrc
4159)
4260
43- target_sources (bikram-calendar  PRIVATE 
61+ set (HEADERS 
4462    autostartmanager.h
4563    tooltipmanager.h
4664    helper.h
4765)
4866
67+ set (RESOURCES
68+     resources.qrc
69+ )
70+ 
71+ qt_add_executable(bikram-calendar
72+     ${SOURCES} 
73+     ${HEADERS} 
74+     ${RESOURCES} 
75+ )
76+ 
4977target_link_libraries (bikram-calendar PRIVATE 
5078    Qt6::Core
5179    Qt6::Gui
52-     Qt6::Qml
53-     Qt6::Quick
5480    Qt6::Widgets
55-     Qt6::QuickControls2
81+     Qt6::Quick
82+     Qt6::Qml
5683    Qt6::PrintSupport
5784)
5885
86+ #============================================================================= 
87+ # QML Folder Installation (for development) 
88+ #============================================================================= 
89+ #install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/qml" 
90+ #    DESTINATION "${CMAKE_INSTALL_PREFIX}/qml" 
91+ #   FILES_MATCHING PATTERN "*.qml" 
92+ #) 
93+ 
5994#============================================================================= 
6095# Installation Rules 
6196#============================================================================= 
62- # use:  cmake -DCMAKE_INSTALL_PREFIX=/path/to/your/custom/directory for install in your choice directory 
63- # Include standard installation directories (e.g., bin, lib, include) 
6497include (GNUInstallDirs)
6598
6699if (NOT  CMAKE_INSTALL_PREFIX )
@@ -69,6 +102,7 @@ endif()
69102
70103message (STATUS  "Install prefix set to: ${CMAKE_INSTALL_PREFIX} " )
71104message (STATUS  "Binary will be installed to: ${CMAKE_INSTALL_PREFIX} /${CMAKE_INSTALL_BINDIR} " )
105+ 
72106install (TARGETS bikram-calendar
73107    DESTINATION  ${CMAKE_INSTALL_BINDIR} 
74108)
0 commit comments