Parcourir la source

Refactor folder structure, use cmake fetchcontent, add lib3mf dependency

Johannes Kreutz il y a 3 ans
Parent
commit
c2dd179917

+ 24 - 12
trackpoint-app/CMakeLists.txt

@@ -1,23 +1,35 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 3.10)
-PROJECT(TrackpointApp VERSION 0.1)
+CMAKE_MINIMUM_REQUIRED(VERSION 3.19)
+PROJECT(TrackpointApp)
 
-CONFIGURE_FILE(trackpointapp.hpp.in trackpointapp.hpp)
+# Include modules
+INCLUDE(FetchContent)
 
-set(CMAKE_CXX_STANDARD 17)
+# Build TrackpointApp
+# Set C++ mode
+set(CMAKE_CXX_STANDARD 20)
 set(CMAKE_CXX_STANDARD_REQUIRED True)
 
-FIND_PACKAGE(OpenSceneGraph REQUIRED COMPONENTS osgViewer osgDB osgGA osgText osgUtil)
+set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3")
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3")
+
+# OpenSceneGraph
+INCLUDE(thirdparty/openscenegraph.cmake)
+
+# lib3mf
+INCLUDE(thirdparty/lib3mf.cmake)
+
+# The executable we want to build
+ADD_EXECUTABLE(TrackpointApp src/main.cpp)
 
 INCLUDE_DIRECTORIES(
-    ${OPENSCENEGRAPH_INCLUDE_DIRS}
+  ${${OPENSCENEGRAPH_PREFIX}_SOURCE_DIR}/include
+  ${${LIB3MF_PREFIX}_SOURCE_DIR}/include
 )
 
-ADD_EXECUTABLE(TrackpointApp main.cpp)
-
 TARGET_LINK_LIBRARIES(TrackpointApp
-    ${OPENSCENEGRAPH_LIBRARIES}
+  osg osgViewer osgDB osgGA osgText osgUtil
+  lib3mf
 )
 
-TARGET_INCLUDE_DIRECTORIES(TrackpointApp PUBLIC
-    "${PROJECT_BINARY_DIR}"
-)
+# Header to have version number available in the code
+CONFIGURE_FILE(src/trackpointapp.hpp.in src/trackpointapp.hpp)

+ 0 - 0
trackpoint-app/main.cpp → trackpoint-app/src/main.cpp


+ 0 - 0
trackpoint-app/trackpointapp.hpp.in → trackpoint-app/src/trackpointapp.hpp.in


+ 27 - 0
trackpoint-app/thirdparty/lib3mf.cmake

@@ -0,0 +1,27 @@
+# Build lib3mf
+
+# The GitHub release (tag) we want to use
+SET(LIB3MF_TAG v2.1.1)
+
+SET(LIB3MF_PREFIX lib3mf)
+
+SET(LIB3MF_URL https://github.com/3MFConsortium/lib3mf)
+
+# Configure lib3mf
+SET(LIB3MF_TESTS OFF CACHE INTERNAL "")
+SET(BUILD_SHARED_LIBS ON CACHE INTERNAL "")
+
+# Add lib3mf
+FETCHCONTENT_DECLARE(
+  ${LIB3MF_PREFIX}
+  PREFIX ${LIB3MF_PREFIX}
+  GIT_REPOSITORY ${LIB3MF_URL}
+  GIT_TAG ${LIB3MF_TAG}
+)
+
+FETCHCONTENT_GETPROPERTIES(${LIB3MF_PREFIX})
+
+IF(NOT ${LIB3MF_PREFIX}_POPULATED)
+  FETCHCONTENT_POPULATE(${LIB3MF_PREFIX})
+  ADD_SUBDIRECTORY(${${LIB3MF_PREFIX}_SOURCE_DIR} ${${LIB3MF_PREFIX}_BINARY_DIR})
+ENDIF()

+ 33 - 0
trackpoint-app/thirdparty/openscenegraph.cmake

@@ -0,0 +1,33 @@
+# Build OpenSceneGraph
+
+# The GitHub release (tag) we want to use
+SET(OPENSCENEGRAPH_TAG OpenSceneGraph-3.6.5)
+
+SET(OPENSCENEGRAPH_PREFIX openscenegraph)
+
+SET(OPENSCENEGRAPH_URL https://github.com/openscenegraph/OpenSceneGraph)
+
+# Configure OpenSceneGraph
+SET(DYNAMIC_OPENSCENEGRAPH ON CACHE INTERNAL "")
+SET(DYNAMIC_OPENTHREADS ON CACHE INTERNAL "")
+SET(BUILD_OSG_EXAMPLES OFF CACHE INTERNAL "")
+SET(BUILD_OSG_APPLICATIONS OFF CACHE INTERNAL "")
+SET(OSG_TEXT_USE_FONTCONFIG OFF CACHE INTERNAL "")
+SET(OSG_GL_LIBRARY_STATIC OFF CACHE INTERNAL "")
+
+ADD_COMPILE_DEFINITIONS(OSG_LIBRARY_STATIC)
+
+# Add OpenSceneGraph
+FETCHCONTENT_DECLARE(
+  ${OPENSCENEGRAPH_PREFIX}
+  PREFIX ${OPENSCENEGRAPH_PREFIX}
+  GIT_REPOSITORY ${OPENSCENEGRAPH_URL}
+  GIT_TAG ${OPENSCENEGRAPH_TAG}
+)
+
+FETCHCONTENT_GETPROPERTIES(${OPENSCENEGRAPH_PREFIX})
+
+IF(NOT ${OPENSCENEGRAPH_PREFIX}_POPULATED)
+  FETCHCONTENT_POPULATE(${OPENSCENEGRAPH_PREFIX})
+  ADD_SUBDIRECTORY(${${OPENSCENEGRAPH_PREFIX}_SOURCE_DIR} ${${OPENSCENEGRAPH_PREFIX}_BINARY_DIR})
+ENDIF()