浏览代码

Add Draco to cmakelists

Initial pass. Not yet used.
Add Draco library to assimp build and link
RichardTea 4 年之前
父节点
当前提交
3a7d0f5656
共有 3 个文件被更改,包括 62 次插入1 次删除
  1. 48 0
      CMakeLists.txt
  2. 10 1
      code/CMakeLists.txt
  3. 4 0
      test/CMakeLists.txt

+ 48 - 0
CMakeLists.txt

@@ -570,6 +570,54 @@ ELSE ()
   ADD_DEFINITIONS( -DASSIMP_BUILD_NO_C4D_IMPORTER )
 ENDIF ()
 
+OPTION ( ASSIMP_BUILD_DRACO "If the Draco libraries are to be built. Primarily for glTF" ON )
+IF ( ASSIMP_BUILD_DRACO )
+  # Primarily for glTF v2
+  # Enable Draco glTF feature set
+  set(DRACO_GLTF ON CACHE BOOL "" FORCE)
+  # Disable unnecessary or omitted components
+  set(DRACO_JS_GLUE OFF CACHE BOOL "" FORCE)
+  set(DRACO_WASM OFF CACHE BOOL "" FORCE)
+  set(DRACO_MAYA_PLUGIN OFF CACHE BOOL "" FORCE)
+  set(DRACO_UNITY_PLUGIN OFF CACHE BOOL "" FORCE)
+  set(DRACO_TESTS OFF CACHE BOOL "" FORCE)
+  
+  IF(ASSIMP_HUNTER_ENABLED)
+    # hunter is untested
+    hunter_add_package(draco)
+    find_package(draco CONFIG REQUIRED)
+  ELSE()
+    # Draco 1.4.1 has several nasty warnings and will not build with /WX
+    IF(MSVC)
+      set(DRACO_CXX_FLAGS "/W0")
+    ENDIF()
+    ADD_SUBDIRECTORY( "contrib/draco" )
+    
+    # Don't build the draco command-line tools by default
+    set_target_properties(draco_encoder draco_decoder PROPERTIES EXCLUDE_FROM_ALL TRUE)
+    set_target_properties(draco_encoder draco_decoder PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD TRUE)
+    
+    TARGET_USE_COMMON_OUTPUT_DIRECTORY(draco)
+    TARGET_USE_COMMON_OUTPUT_DIRECTORY(draco_encoder)
+    TARGET_USE_COMMON_OUTPUT_DIRECTORY(draco_decoder)
+    
+    set(draco_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/contrib/draco/src")
+    
+    # This is probably wrong
+    INSTALL( TARGETS draco
+      EXPORT "${TARGETS_EXPORT_NAME}"
+      LIBRARY DESTINATION ${ASSIMP_LIB_INSTALL_DIR}
+      ARCHIVE DESTINATION ${ASSIMP_LIB_INSTALL_DIR}
+      RUNTIME DESTINATION ${ASSIMP_BIN_INSTALL_DIR}
+      FRAMEWORK DESTINATION ${ASSIMP_LIB_INSTALL_DIR}
+      COMPONENT ${LIBASSIMP_COMPONENT}
+      INCLUDES DESTINATION include
+  )
+
+  ENDIF()
+ENDIF()
+
+# Main assimp code
 ADD_SUBDIRECTORY( code/ )
 IF ( ASSIMP_BUILD_ASSIMP_TOOLS )
   # The viewer for windows only

+ 10 - 1
code/CMakeLists.txt

@@ -1117,6 +1117,11 @@ IF (ASSIMP_BUILD_NONFREE_C4D_IMPORTER)
   INCLUDE_DIRECTORIES(${C4D_INCLUDES})
 ENDIF ()
 
+IF (ASSIMP_BUILD_DRACO)
+  INCLUDE_DIRECTORIES(${draco_INCLUDE_DIRS})
+  ADD_DEFINITIONS( -DASSIMP_ENABLE_DRACO )
+ENDIF()
+
 ADD_LIBRARY( assimp ${assimp_src} )
 ADD_LIBRARY(assimp::assimp ALIAS assimp)
 
@@ -1149,7 +1154,7 @@ IF(ASSIMP_HUNTER_ENABLED)
       pugixml
   )
 ELSE()
-  TARGET_LINK_LIBRARIES(assimp ${ZLIB_LIBRARIES} ${OPENDDL_PARSER_LIBRARIES} )
+  TARGET_LINK_LIBRARIES(assimp ${ZLIB_LIBRARIES} ${OPENDDL_PARSER_LIBRARIES})
 ENDIF()
 
 if(ASSIMP_ANDROID_JNIIOSYSTEM)
@@ -1164,6 +1169,10 @@ IF (ASSIMP_BUILD_NONFREE_C4D_IMPORTER)
   TARGET_LINK_LIBRARIES(assimp ${C4D_EXTRA_LIBRARIES})
 ENDIF ()
 
+IF (ASSIMP_BUILD_DRACO)
+  target_link_libraries(assimp draco)
+ENDIF()
+
 if( MSVC )
   # in order to prevent DLL hell, each of the DLLs have to be suffixed with the major version and msvc prefix
   # CMake 3.12 added a variable for this

+ 4 - 0
test/CMakeLists.txt

@@ -223,6 +223,10 @@ else()
     target_sources(unit PUBLIC ${Assimp_SOURCE_DIR}/contrib/gtest/src/gtest-all.cc)
 endif()
 
+IF (ASSIMP_BUILD_DRACO)
+  ADD_DEFINITIONS( -DASSIMP_ENABLE_DRACO )
+ENDIF()
+
 TARGET_USE_COMMON_OUTPUT_DIRECTORY(unit)
 
 add_definitions(-DASSIMP_TEST_MODELS_DIR="${CMAKE_CURRENT_LIST_DIR}/models")