cmake_minimum_required(VERSION 3.16)

project(measureview)

if(WIN32)

    add_definitions(-DUNICODE -D_UNICODE)

    if(MSVC)
	    set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
    endif()

endif()

if(DEFINED TARGET_BIN_LOCATION)
    set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${TARGET_BIN_LOCATION})
    set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${TARGET_BIN_LOCATION})
else()
    set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin)
    set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/lib)
endif()

set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/lib)

set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)

find_package(QT NAMES Qt6 Qt5)

message(STATUS "Using prefix Qt${QT_VERSION_MAJOR} for components...")

find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Gui)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Xml)
if(${QT_VERSION_MAJOR} GREATER 4)
    find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets)
endif()

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

set(sources ../../core/graphwidget.cpp
            ../../core/interpolation.cpp
            ../../core/mat4.cpp
            ../../core/messagebox.cpp
            ../../core/referencesystem.cpp
            ../../core/tableeditor.cpp
            ../../core/vector2.cpp
            ../../core/vector3.cpp
            ../../core/xmlfile.cpp
            src/main.cpp
            src/measuredata.cpp
            src/measuredata_ballbar.cpp
            src/measuredata_ballbar10360.cpp
            src/measuredata_gaugeblock.cpp
            src/measuredata_pftu.cpp
            src/measuredata_pingauge.cpp
            src/measuredata_tool.cpp
            src/measuredata_machinelaser10360.cpp
            src/measuredata_machinelaserpmove.cpp
            src/measuredata_ringgauge.cpp
            src/measuredata_rpt.cpp
            src/measuredata_pointrepeat.cpp
            src/measuredata_rolloffsettool.cpp
            src/measuredata_stepgauge10360.cpp
            src/measuredata_stepgaugeb89.cpp
            src/measuredata_stepgaugesquare.cpp
            src/measuredata_temperature.cpp
            src/measuredata_validationplane.cpp
            src/measuredata_validationline.cpp
            src/measuredata_validationcircle.cpp
            src/measuredata_validationsphere.cpp
            src/measuredwidget.cpp
            src/measureview.cpp
            src/nominaleditordialog.cpp
            src/nominalwidget.cpp
            src/measuredinputdialog.cpp
            src/tolerancedialog.cpp)

set(headers ../../core/graphwidget.h
            ../../core/interpolation.h
            ../../core/mat4.h
            ../../core/messagebox.h
            ../../core/referencesystem.h
            ../../core/tableeditor.h
            ../../core/vector2.h
            ../../core/vector3.h
            ../../core/xmlfile.h
            src/measuredata.h
            src/measuredata_ballbar.h
            src/measuredata_ballbar10360.h
            src/measuredata_gaugeblock.h
            src/measuredata_pftu.h
            src/measuredata_pingauge.h
            src/measuredata_tool.h
            src/measuredata_machinelaser10360.h
            src/measuredata_machinelaserpmove.h
            src/measuredata_ringgauge.h
            src/measuredata_rpt.h
            src/measuredata_pointrepeat.h
            src/measuredata_rolloffsettool.h
            src/measuredata_stepgauge10360.h
            src/measuredata_stepgaugeb89.h
            src/measuredata_stepgaugesquare.h
            src/measuredata_temperature.h
            src/measuredata_validationplane.h
            src/measuredata_validationline.h
            src/measuredata_validationcircle.h
            src/measuredata_validationsphere.h
            src/measuredwidget.h
            src/measureview.h
            src/nominaleditordialog.h
            src/nominalwidget.h
            src/measuredinputdialog.h
            src/tolerancedialog.h)

set(resources res/measureview.qrc)

add_executable(measureview ${sources} ${headers} ${resources})

if(APPLE)

    set_target_properties(measureview PROPERTIES MACOSX_BUNDLE TRUE)
    set_target_properties(measureview PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME measureview)
    set_target_properties(measureview PROPERTIES MACOSX_BUNDLE_ICON_FILE ${PROJECT_SOURCE_DIR}/res/icons.icns)

endif()

target_link_libraries(measureview PRIVATE Qt${QT_VERSION_MAJOR}::Core)
target_link_libraries(measureview PRIVATE Qt${QT_VERSION_MAJOR}::Gui)
target_link_libraries(measureview PRIVATE Qt${QT_VERSION_MAJOR}::Xml)
if(${QT_VERSION_MAJOR} GREATER 4)
    target_link_libraries(measureview PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)
endif()

set_target_properties(measureview PROPERTIES DEBUG_POSTFIX "d")

install(TARGETS measureview DESTINATION bin)

