CMakeLists.txt 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299
  1. # Open Asset Import Library (assimp)
  2. # ----------------------------------------------------------------------
  3. # Copyright (c) 2006-2025, assimp team
  4. #
  5. # All rights reserved.
  6. #
  7. # Redistribution and use of this software in source and binary forms,
  8. # with or without modification, are permitted provided that the
  9. # following conditions are met:
  10. #
  11. # * Redistributions of source code must retain the above
  12. # copyright notice, this list of conditions and the
  13. # following disclaimer.
  14. #
  15. # * Redistributions in binary form must reproduce the above
  16. # copyright notice, this list of conditions and the
  17. # following disclaimer in the documentation and/or other
  18. # materials provided with the distribution.
  19. #
  20. # * Neither the name of the assimp team, nor the names of its
  21. # contributors may be used to endorse or promote products
  22. # derived from this software without specific prior
  23. # written permission of the assimp team.
  24. #
  25. # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  26. # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  27. # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  28. # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
  29. # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  30. # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  31. # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  32. # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  33. # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  34. # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  35. # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  36. #
  37. #----------------------------------------------------------------------
  38. cmake_minimum_required( VERSION 3.10 )
  39. INCLUDE_DIRECTORIES(
  40. ${Assimp_SOURCE_DIR}/test/unit
  41. ${Assimp_SOURCE_DIR}/include
  42. ${Assimp_SOURCE_DIR}/code
  43. )
  44. if(NOT ASSIMP_HUNTER_ENABLED)
  45. INCLUDE_DIRECTORIES(
  46. ${Assimp_SOURCE_DIR}/contrib/googletest/googletest/include
  47. ${Assimp_SOURCE_DIR}/contrib/googletest/googletest/
  48. ${Assimp_SOURCE_DIR}/contrib/pugixml/src
  49. )
  50. endif()
  51. if (MSVC)
  52. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING")
  53. endif()
  54. # Add the temporary output directories to the library path to make sure the
  55. # Assimp library can be found, even if it is not installed system-wide yet.
  56. LINK_DIRECTORIES( ${Assimp_BINARY_DIR} ${AssetImporter_BINARY_DIR}/lib )
  57. SET(TOOLS
  58. unit/Tools/TestTools.h
  59. )
  60. SET( COMMON
  61. unit/utSimd.cpp
  62. unit/utIOSystem.cpp
  63. unit/utIOStreamBuffer.cpp
  64. unit/utIssues.cpp
  65. unit/utAnim.cpp
  66. unit/AssimpAPITest.cpp
  67. unit/AssimpAPITest_aiMatrix3x3.cpp
  68. unit/AssimpAPITest_aiMatrix4x4.cpp
  69. unit/AssimpAPITest_aiQuaternion.cpp
  70. unit/AssimpAPITest_aiVector2D.cpp
  71. unit/AssimpAPITest_aiVector3D.cpp
  72. unit/MathTest.cpp
  73. unit/MathTest.h
  74. unit/RandomNumberGeneration.h
  75. unit/utBatchLoader.cpp
  76. unit/utDefaultIOStream.cpp
  77. unit/utFastAtof.cpp
  78. unit/utMetadata.cpp
  79. unit/SceneDiffer.h
  80. unit/SceneDiffer.cpp
  81. unit/UTLogStream.h
  82. unit/AbstractImportExportBase.cpp
  83. unit/TestIOSystem.h
  84. unit/TestModelFactory.h
  85. unit/utTypes.cpp
  86. unit/utVersion.cpp
  87. unit/Common/utParsingUtils.cpp
  88. unit/utProfiler.cpp
  89. unit/utSharedPPData.cpp
  90. unit/utStringUtils.cpp
  91. unit/Common/utMaybe.cpp
  92. unit/Common/utMesh.cpp
  93. unit/Common/utStandardShapes.cpp
  94. unit/Common/uiScene.cpp
  95. unit/Common/utLineSplitter.cpp
  96. unit/Common/utSpatialSort.cpp
  97. unit/Common/utAssertHandler.cpp
  98. unit/Common/utXmlParser.cpp
  99. unit/Common/utBase64.cpp
  100. unit/Common/utHash.cpp
  101. unit/Common/utBaseProcess.cpp
  102. unit/Common/utLogger.cpp
  103. )
  104. SET(Geometry
  105. unit/Geometry/utGeometryUtils.cpp
  106. )
  107. SET( IMPORTERS
  108. unit/ImportExport/Assxml/utAssxmlImportExport.cpp
  109. unit/utLWSImportExport.cpp
  110. unit/utLWOImportExport.cpp
  111. unit/utSMDImportExport.cpp
  112. unit/utglTFImportExport.cpp
  113. unit/utglTF2ImportExport.cpp
  114. unit/utHMPImportExport.cpp
  115. unit/utIFCImportExport.cpp
  116. unit/utFBXImporterExporter.cpp
  117. unit/utImporter.cpp
  118. unit/ImportExport/utExporter.cpp
  119. unit/ut3DImportExport.cpp
  120. unit/ut3DSImportExport.cpp
  121. unit/utACImportExport.cpp
  122. unit/utAMFImportExport.cpp
  123. unit/utASEImportExport.cpp
  124. unit/utD3MFImportExport.cpp
  125. unit/utQ3DImportExport.cpp
  126. unit/utSTLImportExport.cpp
  127. unit/utXImporterExporter.cpp
  128. unit/utX3DImportExport.cpp
  129. unit/utDXFImporterExporter.cpp
  130. unit/utPMXImporter.cpp
  131. unit/utPLYImportExport.cpp
  132. unit/utObjImportExport.cpp
  133. unit/utObjTools.cpp
  134. unit/utOpenGEXImportExport.cpp
  135. unit/utSIBImporter.cpp
  136. unit/utBlenderIntermediate.cpp
  137. unit/utBlendImportAreaLight.cpp
  138. unit/utBlenderImportExport.cpp
  139. unit/utBlendImportMaterials.cpp
  140. unit/utBlenderWork.cpp
  141. unit/utBVHImportExport.cpp
  142. unit/utColladaExport.cpp
  143. unit/utColladaImportExport.cpp
  144. unit/utCSMImportExport.cpp
  145. unit/utB3DImportExport.cpp
  146. #unit/utM3DImportExport.cpp
  147. unit/utMDCImportExport.cpp
  148. unit/utAssbinImportExport.cpp
  149. unit/ImportExport/utAssjsonImportExport.cpp
  150. unit/ImportExport/utCOBImportExport.cpp
  151. unit/ImportExport/utOgreImportExport.cpp
  152. unit/ImportExport/utQ3BSPFileImportExport.cpp
  153. unit/ImportExport/utOFFImportExport.cpp
  154. unit/ImportExport/utNFFImportExport.cpp
  155. unit/ImportExport/utXGLImportExport.cpp
  156. unit/ImportExport/utMD2Importer.cpp
  157. #unit/ImportExport/utMD3Importer.cpp
  158. unit/ImportExport/utMD5Importer.cpp
  159. unit/ImportExport/utMDLImporter.cpp
  160. unit/ImportExport/MDL/MDLHL1TestFiles.h
  161. unit/ImportExport/MDL/utMDLImporter_HL1_ImportSettings.cpp
  162. unit/ImportExport/MDL/utMDLImporter_HL1_Materials.cpp
  163. unit/ImportExport/MDL/utMDLImporter_HL1_Nodes.cpp
  164. unit/ImportExport/RAW/utRAWImportExport.cpp
  165. unit/ImportExport/Terragen/utTerragenImportExport.cpp
  166. unit/ImportExport/Pbrt/utPbrtImportExport.cpp
  167. )
  168. if(ASSIMP_BUILD_USD_IMPORTER)
  169. list( APPEND IMPORTERS
  170. unit/utUSDImport.cpp
  171. )
  172. endif()
  173. SET( MATERIAL
  174. unit/utMaterialSystem.cpp
  175. )
  176. SET( MATH
  177. unit/utMatrix3x3.cpp
  178. unit/utMatrix4x4.cpp
  179. unit/utVector3.cpp
  180. )
  181. SET( POST_PROCESSES
  182. unit/utImproveCacheLocality.cpp
  183. unit/utFixInfacingNormals.cpp
  184. unit/utGenNormals.cpp
  185. unit/utTriangulate.cpp
  186. unit/utTextureTransform.cpp
  187. unit/utRemoveRedundantMaterials.cpp
  188. unit/utRemoveVCProcess.cpp
  189. unit/utScaleProcess.cpp
  190. unit/utArmaturePopulate.cpp
  191. unit/utJoinVertices.cpp
  192. unit/utRemoveComments.cpp
  193. unit/utRemoveComponent.cpp
  194. unit/utVertexTriangleAdjacency.cpp
  195. unit/utJoinVertices.cpp
  196. unit/utSplitLargeMeshes.cpp
  197. unit/utFindDegenerates.cpp
  198. unit/utFindInvalidData.cpp
  199. unit/utLimitBoneWeights.cpp
  200. unit/utPretransformVertices.cpp
  201. unit/utScenePreprocessor.cpp
  202. unit/utTargetAnimation.cpp
  203. unit/utSortByPType.cpp
  204. unit/utSceneCombiner.cpp
  205. unit/utGenBoundingBoxesProcess.cpp
  206. )
  207. SOURCE_GROUP( UnitTests\\Compiler FILES unit/CCompilerTest.c )
  208. SOURCE_GROUP( UnitTests\\Common FILES ${COMMON} )
  209. SOURCE_GROUP( UnitTests\\GeometryTools FILES ${Geometry} )
  210. SOURCE_GROUP( UnitTests\\ImportExport FILES ${IMPORTERS} )
  211. SOURCE_GROUP( UnitTests\\Material FILES ${MATERIAL} )
  212. SOURCE_GROUP( UnitTests\\Math FILES ${MATH} )
  213. SOURCE_GROUP( UnitTests\\Tools FILES ${TOOLS} )
  214. SOURCE_GROUP( UnitTests\\PostProcess FILES ${POST_PROCESSES})
  215. add_executable( unit
  216. unit/CCompilerTest.c
  217. unit/Main.cpp
  218. ../code/Common/Version.cpp
  219. ../code/Common/Base64.cpp
  220. ${COMMON}
  221. ${Geometry}
  222. ${IMPORTERS}
  223. ${MATERIAL}
  224. ${MATH}
  225. ${POST_PROCESSES}
  226. ${TOOLS}
  227. )
  228. if(ASSIMP_HUNTER_ENABLED)
  229. hunter_add_package(GTest)
  230. find_package(GTest CONFIG REQUIRED)
  231. target_link_libraries(unit GTest::gtest_main GTest::gmock)
  232. else()
  233. target_sources(unit PUBLIC ${Assimp_SOURCE_DIR}/contrib/googletest/googletest/src/gtest-all.cc)
  234. endif()
  235. # RapidJSON
  236. IF(ASSIMP_HUNTER_ENABLED)
  237. hunter_add_package(RapidJSON)
  238. find_package(RapidJSON CONFIG REQUIRED)
  239. ELSE()
  240. INCLUDE_DIRECTORIES("../contrib/rapidjson/include")
  241. ADD_DEFINITIONS( -DRAPIDJSON_HAS_STDSTRING=1)
  242. option( ASSIMP_RAPIDJSON_NO_MEMBER_ITERATOR "Suppress rapidjson warning on MSVC (NOTE: breaks android build)" ON )
  243. if(ASSIMP_RAPIDJSON_NO_MEMBER_ITERATOR)
  244. ADD_DEFINITIONS( -DRAPIDJSON_NOMEMBERITERATORCLASS )
  245. endif()
  246. ENDIF()
  247. IF (ASSIMP_BUILD_DRACO)
  248. ADD_DEFINITIONS( -DASSIMP_ENABLE_DRACO )
  249. ENDIF()
  250. TARGET_USE_COMMON_OUTPUT_DIRECTORY(unit)
  251. add_definitions(-DASSIMP_TEST_MODELS_DIR="${CMAKE_CURRENT_LIST_DIR}/models")
  252. add_definitions(-DASSIMP_TEST_MODELS_NONBSD_DIR="${CMAKE_CURRENT_LIST_DIR}/models-nonbsd")
  253. SET_PROPERTY( TARGET assimp PROPERTY DEBUG_POSTFIX ${CMAKE_DEBUG_POSTFIX} )
  254. IF( WIN32 )
  255. SET( platform_libs )
  256. ELSEIF(ANDROID)
  257. SET( platform_libs )
  258. ELSE()
  259. SET( platform_libs pthread )
  260. ENDIF()
  261. IF(MSVC)
  262. add_definitions(-D_CRT_SECURE_NO_WARNINGS)
  263. ENDIF()
  264. IF (ASSIMP_WARNINGS_AS_ERRORS)
  265. IF (MSVC)
  266. TARGET_COMPILE_OPTIONS(unit PRIVATE /W4 /WX)
  267. ELSE()
  268. TARGET_COMPILE_OPTIONS(unit PRIVATE -Wall -Werror)
  269. ENDIF()
  270. ENDIF()
  271. target_link_libraries( unit assimp ${platform_libs} )
  272. add_subdirectory(headercheck)
  273. add_test( unittests unit )