CMakeLists.txt 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. CMAKE_MINIMUM_REQUIRED(VERSION 3.16.3)
  2. PROJECT(TrackpointApp VERSION 0.0.1 LANGUAGES CXX)
  3. # Include modules
  4. INCLUDE(FetchContent)
  5. # Build TrackpointApp
  6. # Set C++ mode
  7. SET(CMAKE_CXX_STANDARD 20)
  8. SET(CMAKE_CXX_STANDARD_REQUIRED True)
  9. SET(CMAKE_CXX_FLAGS_DEBUG "-O0")
  10. SET(CMAKE_CXX_FLAGS_RELEASE "-O2")
  11. SET(CMAKE_AUTOUIC ON)
  12. SET(CMAKE_AUTOMOC ON)
  13. SET(CMAKE_AUTORCC ON)
  14. SET(CMAKE_INCLUDE_CURRENT_DIR ON)
  15. # Qt
  16. LIST(APPEND CMAKE_PREFIX_PATH "${CMAKE_CURRENT_LIST_DIR}/thirdparty/qt/install")
  17. FIND_PACKAGE(Qt6 COMPONENTS Core Gui Widgets OpenGLWidgets REQUIRED NO_CMAKE_SYSTEM_PATH)
  18. # Json
  19. INCLUDE(thirdparty/json.cmake)
  20. # Development build: dynamic link
  21. if(NOT BUILD_STATIC_RELEASE)
  22. # OpenSceneGraph
  23. INCLUDE(thirdparty/openscenegraph.cmake)
  24. # lib3mf
  25. INCLUDE(thirdparty/lib3mf.cmake)
  26. ENDIF()
  27. # Release build: static link
  28. if(BUILD_STATIC_RELEASE)
  29. # OpenSceneGraph
  30. LIST(APPEND CMAKE_PREFIX_PATH "${CMAKE_CURRENT_LIST_DIR}/thirdparty/openscenegraph/install")
  31. FIND_PACKAGE(OpenSceneGraph REQUIRED COMPONENTS osgViewer osgDB osgGA osgText osgUtil)
  32. # lib3mf
  33. LIST(APPEND CMAKE_PREFIX_PATH "${CMAKE_CURRENT_LIST_DIR}/thirdparty/lib3mf/install")
  34. FIND_PACKAGE(Lib3MF REQUIRED)
  35. ENDIF()
  36. # The executable we want to build
  37. QT_ADD_EXECUTABLE(TrackpointApp
  38. src/main.cpp
  39. src/MainWindow.cpp
  40. include/MainWindow.hpp
  41. gui/MainWindow.ui
  42. include/OSGWidget.hpp
  43. src/OSGWidget.cpp
  44. src/PickHandler.cpp
  45. src/StoreHandler.cpp
  46. src/TrackPoint.cpp
  47. src/ThreeMFWriter.cpp
  48. src/OpenScadRenderer.cpp
  49. )
  50. if(NOT BUILD_STATIC_RELEASE)
  51. INCLUDE_DIRECTORIES(
  52. ${${OPENSCENEGRAPH_PREFIX}_SOURCE_DIR}/include
  53. ${${LIB3MF_PREFIX}_BINARY_DIR}/Autogenerated/Bindings/Cpp
  54. )
  55. TARGET_LINK_LIBRARIES(TrackpointApp PRIVATE
  56. osg osgViewer osgDB osgGA osgText osgUtil
  57. lib3mf
  58. )
  59. ENDIF()
  60. if(BUILD_STATIC_RELEASE)
  61. INCLUDE_DIRECTORIES(
  62. ${OPENSCENEGRAPH_INCLUDE_DIRS}
  63. ${LIB3MF_INCLUDE_DIRS}
  64. )
  65. TARGET_LINK_LIBRARIES(TrackpointApp PRIVATE
  66. ${OPENSCENEGRAPH_LIBRARIES}
  67. ${LIB3MF_LIBRARIES}
  68. )
  69. ENDIF()
  70. INCLUDE_DIRECTORIES(
  71. ${${JSON_PREFIX}_SOURCE_DIR}/include
  72. include
  73. gui
  74. )
  75. TARGET_LINK_LIBRARIES(TrackpointApp PRIVATE
  76. nlohmann_json::nlohmann_json
  77. Qt6::Core
  78. Qt6::Gui
  79. Qt6::Widgets
  80. Qt6::OpenGLWidgets
  81. )
  82. # Header to have version number available in the code
  83. CONFIGURE_FILE(src/trackpointapp.hpp.in src/trackpointapp.hpp)