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'
}
@Karamu98
Copy link

Karamu98 commented Mar 20, 2024

First of all, thank you @Cannedfood for making this much easier for me!

I've updated it to work with latest pull assimp, files have just been moved basically and new dependencies added. Only tested it working with FBX and Obj currently, use the above but replace files and includedirs with the following

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/**' -- For caching
}

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',
}

@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