2025-05-26 09:40:01 +00:00
|
|
|
cmake_minimum_required(VERSION 3.31)
|
|
|
|
project(atm_admin_program)
|
|
|
|
|
|
|
|
set(CMAKE_CXX_STANDARD 20)
|
|
|
|
|
2025-05-28 08:54:22 +00:00
|
|
|
add_executable(${CMAKE_PROJECT_NAME}
|
|
|
|
src/main.cpp
|
2025-06-11 09:06:23 +00:00
|
|
|
src/AtmAdmin.cpp
|
|
|
|
src/XmlHandling.cpp
|
|
|
|
libs/XmlHandling.h)
|
2025-05-28 08:54:22 +00:00
|
|
|
|
|
|
|
find_package(pugixml CONFIG REQUIRED)
|
|
|
|
target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE libs)
|
|
|
|
target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE pugixml::static pugixml::pugixml)
|
2025-05-26 09:40:01 +00:00
|
|
|
|
2025-06-13 07:59:22 +00:00
|
|
|
# Check if we're using MinGW or compiling for Windows
|
|
|
|
if(MINGW OR WIN32)
|
|
|
|
# Windows/MinGW specific settings
|
|
|
|
target_compile_options(${PROJECT_NAME} PRIVATE
|
|
|
|
# Make all warnings into errors
|
|
|
|
-Werror
|
|
|
|
|
|
|
|
# Basic warning flags
|
|
|
|
-Wall # Enable all common warnings
|
|
|
|
-Wextra # Enable extra warnings not covered by -Wall
|
|
|
|
-Wpedantic # Issue warnings demanded by strict ISO C and ISO C++
|
|
|
|
-pedantic-errors # Like -Wpedantic but errors instead of warnings
|
|
|
|
|
|
|
|
# Specific warning categories
|
|
|
|
-Wshadow # Warn when a variable declaration shadows another
|
|
|
|
-Wcast-align # Warn for potential performance problems from memory alignment
|
|
|
|
-Wconversion # Warn on type conversions that may lose data
|
|
|
|
-Wsign-conversion # Warn on sign conversions
|
|
|
|
-Wnull-dereference # Warn about null pointer dereference
|
|
|
|
|
|
|
|
# MinGW/Windows specific flags
|
|
|
|
-static-libgcc # Link libgcc statically
|
|
|
|
-static-libstdc++ # Link libstdc++ statically
|
|
|
|
)
|
|
|
|
|
|
|
|
# Windows-specific linker flags
|
|
|
|
target_link_options(${PROJECT_NAME} PRIVATE
|
|
|
|
-static # Create a static executable
|
|
|
|
-Wl,--no-undefined # Don't allow undefined symbols
|
|
|
|
)
|
|
|
|
|
|
|
|
# Define Windows macros if needed
|
|
|
|
target_compile_definitions(${PROJECT_NAME} PRIVATE
|
|
|
|
WIN32_LEAN_AND_MEAN # Exclude rarely-used stuff from Windows headers
|
|
|
|
NOMINMAX # Prevent Windows.h from defining min/max macros
|
|
|
|
)
|
|
|
|
else()
|
|
|
|
# Linux/Unix specific settings
|
|
|
|
target_compile_options(${PROJECT_NAME} PRIVATE
|
|
|
|
# Make all warnings into errors
|
|
|
|
-Werror
|
|
|
|
|
|
|
|
# Basic warning flags
|
|
|
|
-Wall # Enable all common warnings
|
|
|
|
-Wextra # Enable extra warnings not covered by -Wall
|
|
|
|
-Wpedantic # Issue warnings demanded by strict ISO C and ISO C++
|
|
|
|
-pedantic-errors # Like -Wpedantic but errors instead of warnings
|
|
|
|
|
|
|
|
# Specific warning categories
|
|
|
|
-Wshadow # Warn when a variable declaration shadows another
|
|
|
|
-Wcast-align # Warn for potential performance problems from memory alignment
|
|
|
|
-Wconversion # Warn on type conversions that may lose data
|
|
|
|
-Wsign-conversion # Warn on sign conversions
|
|
|
|
-Wnull-dereference # Warn about null pointer dereference
|
|
|
|
)
|
|
|
|
endif()
|