commit
647d2f8d18
43
Build.md
43
Build.md
|
@ -1,32 +1,32 @@
|
|||
# Install CMake
|
||||
# Build Instructions
|
||||
## Install CMake
|
||||
Asset-Importer-Lib can be build for a lot of different platforms. We are using cmake to generate the build environment for these via cmake. So you have to make sure that you have a working cmake-installation on your system. You can download it at https://cmake.org/ or for linux install it via
|
||||
```
|
||||
```bash
|
||||
sudo apt-get install cmake
|
||||
```
|
||||
|
||||
# Get the source
|
||||
## Get the source
|
||||
Make sure you have a working git-installation. Open a command prompt and clone the Asset-Importer-Lib via:
|
||||
```
|
||||
```bash
|
||||
git clone https://github.com/assimp/assimp.git
|
||||
```
|
||||
|
||||
# Build instructions for Windows with Visual-Studio
|
||||
## Build instructions for Windows with Visual-Studio
|
||||
|
||||
First you have to install Visual-Studio on your windows-system. You can get the Community-Version for free here: https://visualstudio.microsoft.com/de/downloads/
|
||||
To generate the build environment for your IDE open a command prompt, navigate to your repo and type:
|
||||
```
|
||||
> cmake CMakeLists.txt
|
||||
```bash
|
||||
cmake CMakeLists.txt
|
||||
```
|
||||
This will generate the project files for the visual studio. All dependencies used to build Asset-IMporter-Lib shall be part of the repo. If you want to use you own zlib.installation this is possible as well. Check the options for it.
|
||||
|
||||
# Build instructions for Windows with UWP
|
||||
See https://stackoverflow.com/questions/40803170/cmake-uwp-using-cmake-to-build-universal-windows-app
|
||||
## Build instructions for Windows with UWP
|
||||
See <https://stackoverflow.com/questions/40803170/cmake-uwp-using-cmake-to-build-universal-windows-app>
|
||||
|
||||
|
||||
# Build instrcutions for Linux / Unix
|
||||
## Build instructions for Linux / Unix
|
||||
Open a terminal and got to your repository. You can generate the makefiles and build the library via:
|
||||
|
||||
```
|
||||
```bash
|
||||
cmake CMakeLists.txt
|
||||
make -j4
|
||||
```
|
||||
|
@ -34,7 +34,23 @@ The option -j descripes the number of parallel processes for the build. In this
|
|||
|
||||
If you want to use a IDE for linux you can try QTCreator for instance.
|
||||
|
||||
# CMake build options
|
||||
## Build instructions for MinGW
|
||||
Older versions of MinGW's compiler (e.g. 5.1.0) do not support the -mbig_obj flag
|
||||
required to compile some of assimp's files, especially for debug builds.
|
||||
Version 7.3.0 of g++-mingw-w64 & gcc-mingw-w64 appears to work.
|
||||
|
||||
Please see [CMake Cross Compiling](https://cmake.org/cmake/help/latest/manual/cmake-toolchains.7.html#cross-compiling) for general information on CMake Toolchains.
|
||||
|
||||
Some users have had success building assimp using MinGW on Linux using [polly](https://github.com/ruslo/polly/).
|
||||
|
||||
The following toolchain, which is not maintained by assimp, seems to work on Linux: [linux-mingw-w64-gnuxx11.cmake](https://github.com/ruslo/polly/blob/master/linux-mingw-w64-gnuxx11.cmake)
|
||||
|
||||
The following toolchain may or may not be helpful for building assimp using MinGW on Windows (untested):
|
||||
[mingw-cxx17.cmake](https://github.com/ruslo/polly/blob/master/mingw-cxx17.cmake)
|
||||
|
||||
Besides the toolchain, compilation should be the same as for Linux / Unix.
|
||||
|
||||
## CMake build options
|
||||
The cmake-build-environment provides options to configure the build. The following options can be used:
|
||||
- **BUILD_SHARED_LIBS ( default ON )**: Generation of shared libs ( dll for windows, so for Linux ). Set this to OFF to get a static lib.
|
||||
- **BUILD_FRAMEWORK ( default OFF, MacOnly)**: Build package as Mac OS X Framework bundle
|
||||
|
@ -55,4 +71,3 @@ The cmake-build-environment provides options to configure the build. The followi
|
|||
- **INJECT_DEBUG_POSTFIX( default ON )**: Inject debug postfix in .a/.so lib names
|
||||
- **IGNORE_GIT_HASH ( default OFF )**: Don't call git to get the hash.
|
||||
- **ASSIMP_INSTALL_PDB ( default ON )**: Install MSVC debug files.
|
||||
|
||||
|
|
|
@ -237,6 +237,11 @@ ELSEIF ( "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" )
|
|||
SET(CMAKE_CXX_FLAGS "-g -fvisibility=hidden -fPIC -fno-strict-aliasing -Wall -Wno-long-long -std=c++11 ${CMAKE_CXX_FLAGS}" )
|
||||
SET(CMAKE_C_FLAGS "-fPIC -fno-strict-aliasing ${CMAKE_C_FLAGS}")
|
||||
ELSEIF( CMAKE_COMPILER_IS_MINGW )
|
||||
IF (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 7.0)
|
||||
message(FATAL_ERROR "MinGW is too old to be supported. Please update MinGW and try again.")
|
||||
ELSEIF(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 7.3)
|
||||
message(WARNING "MinGW is old, if you experience errors, update MinGW.")
|
||||
ENDIF()
|
||||
SET( CMAKE_CXX_FLAGS "-fvisibility=hidden -fno-strict-aliasing -Wall -Wno-long-long -std=c++11 -Wa,-mbig-obj ${CMAKE_CXX_FLAGS}" )
|
||||
SET(CMAKE_C_FLAGS "-fPIC -fno-strict-aliasing ${CMAKE_C_FLAGS} ")
|
||||
ADD_DEFINITIONS( -U__STRICT_ANSI__ )
|
||||
|
|
|
@ -804,6 +804,18 @@ ADD_ASSIMP_IMPORTER( MMD
|
|||
MMDVmdParser.h
|
||||
)
|
||||
|
||||
# Workaround for issue #2406 - force problematic large file to be optimized to prevent string table overflow error
|
||||
# Used -Os instead of -O2 as previous issues had mentioned, since -Os is roughly speaking -O2, excluding any
|
||||
# optimizations that take up extra space. Given that the issue is a string table overflowing, -Os seemed appropriate
|
||||
# Also, I'm not positive if both link & compile flags are needed, but this hopefully ensures that the issue should not
|
||||
# recur for edge cases such as static builds.
|
||||
if ((CMAKE_COMPILER_IS_MINGW) AND (CMAKE_BUILD_TYPE MATCHES Debug))
|
||||
message("-- Applying MinGW StepFileGen1.cpp Debug Workaround")
|
||||
SET_SOURCE_FILES_PROPERTIES(Importer/StepFile/StepFileGen1.cpp PROPERTIES COMPILE_FLAGS -Os )
|
||||
SET_SOURCE_FILES_PROPERTIES(Importer/StepFile/StepFileGen1.cpp PROPERTIES LINK_FLAGS -Os )
|
||||
SET_SOURCE_FILES_PROPERTIES(Importer/StepFile/StepFileGen1.cpp PROPERTIES STATIC_LIBRARY_FLAGS -Os )
|
||||
endif()
|
||||
|
||||
ADD_ASSIMP_IMPORTER( STEP
|
||||
STEPFile.h
|
||||
Importer/StepFile/StepFileImporter.h
|
||||
|
|
|
@ -1,105 +0,0 @@
|
|||
### USE OF THIS MAKEFILE IS NOT RECOMMENDED.
|
||||
### It is no longer maintained. Use CMAKE instead.
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Makefile for Open Asset Import Library (MinGW32-make)
|
||||
# aramis_acg@users.sourceforge.net
|
||||
# - just a quick'n'dirty one, could be buggy ...
|
||||
#
|
||||
# Usage: mingw32-make -f makefile.mingw <target> <macros>
|
||||
|
||||
# TARGETS:
|
||||
# all Build a shared so from the whole library
|
||||
# clean Cleanup object files, prepare for rebuild
|
||||
# static Build a static library (*.a)
|
||||
|
||||
# MACROS: (make clean before you change one)
|
||||
# NOBOOST=1 Build against boost workaround
|
||||
# SINGLETHREADED=1 Build single-threaded library
|
||||
# DEBUG=1 Build debug build of library
|
||||
#
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
# C++ object files
|
||||
OBJECTS := $(patsubst %.cpp,%.o, $(wildcard *.cpp))
|
||||
OBJECTS += $(patsubst %.cpp,%.o, $(wildcard extra/*.cpp))
|
||||
OBJECTS += $(patsubst %.cpp,%.o, $(wildcard ./../contrib/irrXML/*.cpp))
|
||||
|
||||
# C object files
|
||||
OBJECTSC := $(patsubst %.c,%.oc, $(wildcard ./../contrib/zlib/*.c))
|
||||
OBJECTSC += $(patsubst %.c,%.oc, $(wildcard ./../contrib/ConvertUTF/*.c))
|
||||
OBJECTSC += $(patsubst %.c,%.oc, $(wildcard ./../contrib/unzip/*.c))
|
||||
|
||||
# Include flags for gcc
|
||||
INCLUDEFLAGS =
|
||||
|
||||
# Preprocessor defines for gcc
|
||||
DEFINEFLAGS =
|
||||
|
||||
# Suffix for the output binary, represents build type
|
||||
NAMESUFFIX =
|
||||
|
||||
# Output path for binaries
|
||||
BINPATH = ../bin/mingw/
|
||||
|
||||
# GCC compiler flags
|
||||
CPPFLAGS=-Wall
|
||||
|
||||
# Setup environment for noboost build
|
||||
ifeq ($(NOBOOST),1)
|
||||
SINGLETHREADED = 1
|
||||
INCLUDEFLAGS += -I./BoostWorkaround/
|
||||
DEFINEFLAGS += -DASSIMP_BUILD_BOOST_WORKAROUND
|
||||
# NAMESUFFIX += -noboost
|
||||
else
|
||||
# adjust this manually if your boost is stored elsewhere
|
||||
INCLUDEFLAGS += -I"C:/Program Files/boost/boost_1_38"
|
||||
#INCLUDEFLAGS += -I"$(BOOST_DIR)"
|
||||
|
||||
endif
|
||||
|
||||
# Setup environment for st build
|
||||
ifeq ($(SINGLETHREADED),1)
|
||||
DEFINEFLAGS += -DASSIMP_BUILD_SINGLETHREADED
|
||||
# NAMESUFFIX += -st
|
||||
endif
|
||||
|
||||
# Setup environment for debug build
|
||||
ifeq ($(DEBUG),1)
|
||||
DEFINEFLAGS += -D_DEBUG -DDEBUG
|
||||
CPPFLAGS += -g
|
||||
# NAMESUFFIX += -debug
|
||||
else
|
||||
CPPFLAGS += -O2 -s
|
||||
DEFINEFLAGS += -DNDEBUG -D_NDEBUG
|
||||
endif
|
||||
|
||||
# Output name of shared library
|
||||
SHARED_TARGET = $(BINPATH)/libassimp$(NAMESUFFIX).so
|
||||
|
||||
# Output name of static library
|
||||
STATIC = $(BINPATH)/libassimp$(NAMESUFFIX).a
|
||||
|
||||
# target: all
|
||||
# usage : build a shared library (*.so)
|
||||
all: $(SHARED_TARGET)
|
||||
|
||||
$(SHARED_TARGET): $(OBJECTS) $(OBJECTSC)
|
||||
gcc -o $@ $(OBJECTS) $(OBJECTSC) -shared -lstdc++
|
||||
%.o:%.cpp
|
||||
$(CXX) -c $(CPPFLAGS) $? -o $@ $(INCLUDEFLAGS) $(DEFINEFLAGS)
|
||||
%.oc:%.c
|
||||
$(CXX) -x c -c -ansi $(CPPFLAGS) $? -o $@
|
||||
|
||||
# target: clean
|
||||
# usage : cleanup all object files, prepare for a rebuild
|
||||
.PHONY: clean
|
||||
clean:
|
||||
-del *.o .\..\contrib\irrXML\*.o .\..\contrib\zlib\*.oc .\..\contrib\unzip\*.oc .\..\contrib\ConvertUTF\*.oc
|
||||
|
||||
# target: static
|
||||
# usage : build a static library (*.a)
|
||||
static: $(STATIC)
|
||||
$(STATIC): $(OBJECTS) $(OBJECTSC)
|
||||
ar rcs $@ $(OBJECTS) $(OBJECTSC)
|
||||
|
Loading…
Reference in New Issue