Skip to content

Instantly share code, notes, and snippets.

@Cannedfood
Last active May 29, 2024 19:36
Show Gist options
  • Save Cannedfood/a71652022f066c8032f5a1c01919c55d to your computer and use it in GitHub Desktop.
Save Cannedfood/a71652022f066c8032f5a1c01919c55d to your computer and use it in GitHub Desktop.
A premake5 script for building assimp
-- How to use:
-- 0. Get assimp from https://github.com/assimp/assimp
-- 1. Place this file next to the cloned assimp repository like this:
--
-- assimp.lua
-- assimp/
--
-- 2. Set up configuration headers
--
-- 2.1 Create a folder for configuration headers, I usually name it _config_headers/
--
-- _config_headers/assimp/ <- config.h will be included as "assimp/config.h" so the assimp/ part is important
-- assimp.lua
-- assimp
--
-- 2.2 Generate config.h and revision.h from assimp/code/config.h.in and assimp/revision.h.in and put them into _config_headers/assimp. (You can also just edit and rename them, that's what I usually end up doing.)
--
-- _config_headers/
-- assimp/
-- config.h
-- revision.h
-- assimp.lua
-- assimp
--
-- 3. Edit the 'files { ... }' and 'defines { ... }' depending on which importers/exporters you need. By default I enabled COLLADA, OBJ, FBX and ASSBIN (assimp binary, good for caching)
project '*'
includedirs {
'_config_headers/',
'_config_headers/assimp/', -- Location of assimp's config.h, for a template see include/assimp/config.h.in
'assimp/include/',
}
project 'assimp'
kind 'SharedLib'
warnings 'Off'
optimize 'Speed'
includedirs {
'_config_headers/',
'_config_headers/assimp/',
'assimp/',
'assimp/contrib/',
'assimp/contrib/irrXML/',
'assimp/contrib/unzip/',
'assimp/contrib/rapidjson/include/',
'assimp/contrib/pugixml/src/',
'assimp/contrib/zlib/',
'assimp/contrib/utf8cpp/source',
'assimp/code',
'assimp/include',
}
files {
-- Dependencies
'assimp/contrib/unzip/**',
'assimp/contrib/irrXML/**',
'assimp/contrib/zlib/*',
-- Common
'assimp/code/Common/**',
'assimp/code/PostProcessing/**',
'assimp/code/Material/**',
'assimp/code/CApi/**',
'assimp/code/Geometry/**',
-- Importers
'assimp/code/AssetLib/IQM/**',
'assimp/code/AssetLib/Assbin/**',
'assimp/code/AssetLib/Collada/**',
'assimp/code/AssetLib/Obj/**',
-- 'assimp/code/AssetLib/Blender/**', 'assimp/contrib/poly2tri/poly2tri/**',
'assimp/code/AssetLib/FBX/**',
-- 'assimp/code/glTF2/**',
-- 'assimp/code/glTF/**',
'assimp/code/Assbin/**' -- Very fast format to parse/write, useful for caching
}
-- Importers
defines {
'ASSIMP_BUILD_NO_3D_IMPORTER',
'ASSIMP_BUILD_NO_3DS_IMPORTER',
'ASSIMP_BUILD_NO_3MF_IMPORTER',
'ASSIMP_BUILD_NO_AC_IMPORTER',
'ASSIMP_BUILD_NO_AMF_IMPORTER',
'ASSIMP_BUILD_NO_ASE_IMPORTER',
-- 'ASSIMP_BUILD_NO_ASSBIN_IMPORTER'
'ASSIMP_BUILD_NO_B3D_IMPORTER',
'ASSIMP_BUILD_NO_BLEND_IMPORTER',
'ASSIMP_BUILD_NO_BVH_IMPORTER',
'ASSIMP_BUILD_NO_C4D_IMPORTER',
'ASSIMP_BUILD_NO_COB_IMPORTER',
-- 'ASSIMP_BUILD_NO_COLLADA_IMPORTER',
'ASSIMP_BUILD_NO_CSM_IMPORTER',
'ASSIMP_BUILD_NO_DXF_IMPORTER',
-- 'ASSIMP_BUILD_NO_FBX_IMPORTER',
'ASSIMP_BUILD_NO_GLTF_IMPORTER',
'ASSIMP_BUILD_NO_HMP_IMPORTER',
'ASSIMP_BUILD_NO_IFC_IMPORTER',
'ASSIMP_BUILD_NO_IRR_IMPORTER',
'ASSIMP_BUILD_NO_IRRMESH_IMPORTER',
'ASSIMP_BUILD_NO_LWO_IMPORTER',
'ASSIMP_BUILD_NO_LWS_IMPORTER',
'ASSIMP_BUILD_NO_M3D_IMPORTER',
'ASSIMP_BUILD_NO_MD2_IMPORTER',
'ASSIMP_BUILD_NO_MD3_IMPORTER',
'ASSIMP_BUILD_NO_MD5_IMPORTER',
'ASSIMP_BUILD_NO_MDC_IMPORTER',
'ASSIMP_BUILD_NO_MDL_IMPORTER',
'ASSIMP_BUILD_NO_MMD_IMPORTER',
'ASSIMP_BUILD_NO_MS3D_IMPORTER',
'ASSIMP_BUILD_NO_NDO_IMPORTER',
'ASSIMP_BUILD_NO_NFF_IMPORTER',
-- 'ASSIMP_BUILD_NO_OBJ_IMPORTER',
'ASSIMP_BUILD_NO_OFF_IMPORTER',
'ASSIMP_BUILD_NO_OGRE_IMPORTER',
'ASSIMP_BUILD_NO_OPENGEX_IMPORTER',
'ASSIMP_BUILD_NO_PLY_IMPORTER',
'ASSIMP_BUILD_NO_Q3BSP_IMPORTER',
'ASSIMP_BUILD_NO_Q3D_IMPORTER',
'ASSIMP_BUILD_NO_RAW_IMPORTER',
'ASSIMP_BUILD_NO_SIB_IMPORTER',
'ASSIMP_BUILD_NO_SMD_IMPORTER',
'ASSIMP_BUILD_NO_STEP_IMPORTER',
'ASSIMP_BUILD_NO_STL_IMPORTER',
'ASSIMP_BUILD_NO_TERRAGEN_IMPORTER',
'ASSIMP_BUILD_NO_X_IMPORTER',
'ASSIMP_BUILD_NO_X3D_IMPORTER',
'ASSIMP_BUILD_NO_XGL_IMPORTER'
}
-- Exporters
defines {
'ASSIMP_BUILD_NO_COLLADA_EXPORTER',
'ASSIMP_BUILD_NO_X_EXPORTER',
'ASSIMP_BUILD_NO_STEP_EXPORTER',
'ASSIMP_BUILD_NO_OBJ_EXPORTER',
'ASSIMP_BUILD_NO_STL_EXPORTER',
'ASSIMP_BUILD_NO_PLY_EXPORTER',
'ASSIMP_BUILD_NO_3DS_EXPORTER',
'ASSIMP_BUILD_NO_GLTF_EXPORTER',
-- 'ASSIMP_BUILD_NO_ASSBIN_EXPORTER',
'ASSIMP_BUILD_NO_ASSXML_EXPORTER',
'ASSIMP_BUILD_NO_X3D_EXPORTER',
'ASSIMP_BUILD_NO_FBX_EXPORTER',
'ASSIMP_BUILD_NO_M3D_EXPORTER',
'ASSIMP_BUILD_NO_3MF_EXPORTER',
'ASSIMP_BUILD_NO_ASSJSON_EXPORTER'
}
@Cannedfood
Copy link
Author

Thank you very much @Karamu98! I updated the gist accordingly.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment