mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-13 10:57:49 +00:00
Merge pull request #5 from Tridify/windows_build_scripts
Windows & Visual Studio build scripts
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
# Dependency and build folders created by the build scripts
|
||||
/deps*/
|
||||
/build*/
|
||||
/install*/
|
||||
/win/BuildDepsCache*.txt
|
||||
@@ -1,11 +1,16 @@
|
||||
IfcOpenShell
|
||||
============
|
||||
open source (LGPL) software library for working with the IFC file format
|
||||
Open source (LGPL) software library for working with the IFC file format.
|
||||
|
||||
[http://ifcopenshell.org](http://ifcopenshell.org)
|
||||
[http://academy.ifcopenshell.org](http://academy.ifcopenshell.org)
|
||||
|
||||
|
||||
Prerequisites
|
||||
=============
|
||||
* Git, CMake (2.6 or newer), Visual Studio 2008 or newer (Windows), or GCC (*nix, Clang untested).
|
||||
|
||||
|
||||
Dependencies
|
||||
============
|
||||
* [Boost](http://www.boost.org/)
|
||||
@@ -18,32 +23,33 @@ Dependencies
|
||||
For IfcConvert to be able to write tessellated Collada (.dae) files
|
||||
* [SWIG](http://www.swig.org/), [Python](https://www.python.org/) libraries *optional*
|
||||
For building the IfcOpenShell Python interface and the Blender add-on
|
||||
* 3ds max SDK *optional*
|
||||
For building the 3ds max plug-in
|
||||
* 3ds Max SDK *optional*
|
||||
For building the 3ds Max plug-in
|
||||
|
||||
|
||||
Compiling on Windows
|
||||
====================
|
||||
Users are advised to use the Visual Studio .sln file in the win/ folder.
|
||||
For Windows users a prebuilt Open CASCADE version is available from the
|
||||
http://opencascade.org website. Download and install this version and
|
||||
provide the paths to the Open CASCADE header and library files to MS
|
||||
Visual Studio C++.
|
||||
Users are advised to build IfcOpenShell using the CMake file provided in
|
||||
the cmake/ folder.
|
||||
|
||||
For building the Autodesk 3ds Max plugin, the 3ds Max SDK needs to be
|
||||
installed as well as 3ds Max itself. Please provide the include and
|
||||
library paths to Visual Studio.
|
||||
The preferred way to fetch and build this project's dependencies is to use the build scripts
|
||||
in win/ folder. See [win/readme.md] for more information. Instructions in a nutshell
|
||||
(assuming Visual Studio x64 environment variables set):
|
||||
> git clone https://github.com/IfcOpenShell/IfcOpenShell.git
|
||||
> cd oce\win
|
||||
> build-deps.cmd (defaults to using VS 2015 x64 RelWithDebInfo build)
|
||||
> run-cmake.bat (defaults to using VS 2015 x64)
|
||||
> ..\build-vs2015-x64\IfcOpenShell.sln
|
||||
You can now build the solution using the RelWithDebInfo configuration (freshly created solution by CMake defaults to Debug).
|
||||
Build the INSTALL project to deploy the headers and binaries into a single location if wanted/needed.
|
||||
|
||||
For building the IfcPython wrapper, SWIG needs to be installed. Please
|
||||
download the latest swigwin version from http://www.swig.org/download.html.
|
||||
After extracting the .zip file, please add the extracted folder to the PATH
|
||||
environment variable. Python needs to be installed, please provide the
|
||||
include and library paths to Visual Studio.
|
||||
Alternatively, the old Visual Studio solution and project files requiring manual work can
|
||||
be found from the win/sln folder.
|
||||
|
||||
|
||||
Compiling on *nix
|
||||
=================
|
||||
Users are advised to build IfcOpenShell using the cmake file provided in
|
||||
Users are advised to build IfcOpenShell using the CMake file provided in
|
||||
the cmake/ folder. There might be an Open CASCADE package in your operating
|
||||
system's software repository. If not, you will need to compile Open
|
||||
CASCADE yourself. See http://opencascade.org.
|
||||
@@ -146,3 +152,5 @@ Or:
|
||||
>>>
|
||||
>>> # Writing IFC-SPF files to disk:
|
||||
>>> f.write("out.ifc")
|
||||
|
||||
[win/readme.md]: https://github.com/IfcOpenShell/IfcOpenShell/tree/master/win/readme.md "win/readme.md"
|
||||
+253
-179
@@ -1,12 +1,64 @@
|
||||
################################################################################
|
||||
# #
|
||||
# This file is part of IfcOpenShell. #
|
||||
# #
|
||||
# IfcOpenShell is free software: you can redistribute it and/or modify #
|
||||
# it under the terms of the Lesser GNU General Public License as published by #
|
||||
# the Free Software Foundation, either version 3.0 of the License, or #
|
||||
# (at your option) any later version. #
|
||||
# #
|
||||
# IfcOpenShell is distributed in the hope that it will be useful, #
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
|
||||
# Lesser GNU General Public License for more details. #
|
||||
# #
|
||||
# You should have received a copy of the Lesser GNU General Public License #
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>. #
|
||||
# #
|
||||
################################################################################
|
||||
|
||||
cmake_minimum_required (VERSION 2.6)
|
||||
|
||||
project (IfcOpenShell)
|
||||
|
||||
FIND_PACKAGE(Boost REQUIRED COMPONENTS program_options)
|
||||
OPTION(UNICODE_SUPPORT "Build IfcOpenShell with Unicode support (requires ICU)." ON)
|
||||
OPTION(COLLADA_SUPPORT "Build IfcConvert with COLLADA support (requires OpenCOLLADA)." ON)
|
||||
OPTION(ENABLE_BUILD_OPTIMIZATIONS "Enable certain compiler and linker optimizations on RelWithDebInfo and Release builds." OFF)
|
||||
#TODO OPTION(IFCCONVERT_DOUBLE_PRECISION "IfcConvert: Use double precision floating-point numbers." OFF)
|
||||
OPTION(USE_IFC4 "Use IFC 4 instead of IFC 2x3" OFF)
|
||||
OPTION(BUILD_IFCPYTHON "Build IfcPython." ON)
|
||||
OPTION(BUILD_EXAMPLES "Build example applications." ON)
|
||||
# TODO QtViewer is deprecated ATM as it uses the 0.4 API
|
||||
# OPTION(BUILD_QTVIEWER "Build IfcOpenShell Qt GUI Viewer (requires Qt 4 framework)." OFF)
|
||||
|
||||
# Find Boost
|
||||
IF(MSVC)
|
||||
SET(Boost_USE_STATIC_LIBS ON)
|
||||
SET(Boost_USE_STATIC_RUNTIME ON)
|
||||
SET(Boost_USE_MULTITHREADED ON)
|
||||
ENDIF()
|
||||
FIND_PACKAGE(Boost REQUIRED COMPONENTS system program_options regex thread date_time)
|
||||
MESSAGE(STATUS "Boost include files found in ${Boost_INCLUDE_DIRS}")
|
||||
MESSAGE(STATUS "Boost libraries found in ${Boost_LIBRARY_DIRS}")
|
||||
|
||||
# Find Open CASCADE header files
|
||||
IF("$ENV{OCC_INCLUDE_DIR}" STREQUAL "")
|
||||
# Usage:
|
||||
# SET(SOME_LIRARIES foo bar)
|
||||
# ADD_DEBUG_VARIANTS(SOME_LIRARIES "${SOME_LIRARIES}" "d")
|
||||
# "foo bar" -> "optimized foo debug food optimized bar debug bard"
|
||||
FUNCTION(ADD_DEBUG_VARIANTS NAME LIBRARIES POSTFIX)
|
||||
SET(LIBRARIES_STR "${LIBRARIES}")
|
||||
SET(LIBRARIES "")
|
||||
FOREACH(lib ${LIBRARIES_STR})
|
||||
SET(LIBRARIES "${LIBRARIES} optimized ${lib}")
|
||||
SET(LIBRARIES "${LIBRARIES} debug ${lib}${POSTFIX}")
|
||||
ENDFOREACH()
|
||||
STRING(STRIP ${LIBRARIES} LIBRARIES) # leading and trailing whitespace cause confusion
|
||||
SEPARATE_ARGUMENTS(LIBRARIES) # "optimized <lib> debug <lib>" needs to be a list instead of a string
|
||||
SET(${NAME} ${LIBRARIES} PARENT_SCOPE)
|
||||
ENDFUNCTION()
|
||||
|
||||
# Find Open CASCADE
|
||||
IF("$ENV{OCC_INCLUDE_DIR}" STREQUAL "")
|
||||
SET(OCC_INCLUDE_DIR "/usr/include/opencascade/" CACHE FILEPATH "Open CASCADE header files")
|
||||
MESSAGE(STATUS "Looking for opencascade include files in: ${OCC_INCLUDE_DIR}")
|
||||
MESSAGE(STATUS "Use OCC_INCLUDE_DIR to specify another directory")
|
||||
@@ -22,8 +74,16 @@ ELSE()
|
||||
MESSAGE(FATAL_ERROR "Unable to find header files, aborting")
|
||||
ENDIF()
|
||||
|
||||
# Find Open CASCADE library files
|
||||
IF("$ENV{OCC_LIBRARY_DIR}" STREQUAL "")
|
||||
SET(OPENCASCADE_LIBRARIES
|
||||
TKernel TKMath TKBRep TKGeomBase TKGeomAlgo TKG3d TKG2d TKShHealing TKTopAlgo TKMesh TKPrim TKBool TKBO
|
||||
TKFillet TKSTEP TKSTEPBase TKSTEPAttr TKXSBase TKSTEP209 TKIGES TKOffset
|
||||
)
|
||||
|
||||
IF(MSVC)
|
||||
ADD_DEBUG_VARIANTS(OPENCASCADE_LIBRARIES "${OPENCASCADE_LIBRARIES}" "d")
|
||||
ENDIF()
|
||||
|
||||
IF("$ENV{OCC_LIBRARY_DIR}" STREQUAL "")
|
||||
SET(OCC_LIBRARY_DIR "/usr/lib/" CACHE FILEPATH "Open CASCADE library files")
|
||||
MESSAGE(STATUS "Looking for opencascade library files in: ${OCC_LIBRARY_DIR}")
|
||||
MESSAGE(STATUS "Use OCC_LIBRARY_DIR to specify another directory")
|
||||
@@ -32,210 +92,224 @@ ELSE()
|
||||
MESSAGE(STATUS "Looking for opencascade library files in: ${OCC_LIBRARY_DIR}")
|
||||
ENDIF()
|
||||
|
||||
FIND_LIBRARY(libTKernel "TKernel" ${OCC_LIBRARY_DIR} /usr/lib /usr/lib64 /usr/local/lib /usr/local/lib64)
|
||||
FIND_LIBRARY(libTKernel NAMES TKernel TKerneld PATHS ${OCC_LIBRARY_DIR} /usr/lib /usr/lib64 /usr/local/lib /usr/local/lib64)
|
||||
IF(libTKernel)
|
||||
MESSAGE(STATUS "Library files found")
|
||||
ELSE()
|
||||
MESSAGE(FATAL_ERROR "Unable to find library files, aborting")
|
||||
ENDIF()
|
||||
|
||||
IF("$ENV{ICU_INCLUDE_DIR}" STREQUAL "")
|
||||
MESSAGE(STATUS "No ICU include directory specified")
|
||||
ElSE()
|
||||
SET(ICU_INCLUDE_DIR CACHE FILEPATH "ICU header files")
|
||||
IF(UNICODE_SUPPORT)
|
||||
# Find ICU
|
||||
IF("$ENV{ICU_INCLUDE_DIR}" STREQUAL "")
|
||||
MESSAGE(STATUS "No ICU include directory specified")
|
||||
ElSE()
|
||||
SET(ICU_INCLUDE_DIR "$ENV{ICU_INCLUDE_DIR}" CACHE FILEPATH "ICU header files")
|
||||
ENDIF()
|
||||
|
||||
IF("$ENV{ICU_LIBRARY_DIR}" STREQUAL "")
|
||||
MESSAGE(STATUS "No ICU library directory specified")
|
||||
ElSE()
|
||||
SET(ICU_LIBRARY_DIR "$ENV{ICU_LIBRARY_DIR}" CACHE FILEPATH "ICU library files")
|
||||
ENDIF()
|
||||
|
||||
FIND_LIBRARY(icu NAMES icuuc icuucd PATHS /usr/lib /usr/lib64 /usr/local/lib /usr/local/lib64 ${ICU_LIBRARY_DIR})
|
||||
|
||||
IF(icu)
|
||||
ADD_DEFINITIONS(-DHAVE_ICU)
|
||||
MESSAGE(STATUS "ICU libraries found")
|
||||
# NOTE icudata appears to be icudt on Windows/MSVC on icudata on others
|
||||
IF(MSVC)
|
||||
SET(ICU_LIBRARIES icuuc icudt)
|
||||
ADD_DEBUG_VARIANTS(ICU_LIBRARIES "${ICU_LIBRARIES}" "d")
|
||||
ADD_DEFINITIONS(-DU_STATIC_IMPLEMENTATION) # required for static ICU
|
||||
ELSE()
|
||||
SET(ICU_LIBRARIES icuuc icudata)
|
||||
ENDIF()
|
||||
ELSE()
|
||||
MESSAGE(FATAL_ERROR "UNICODE_SUPPORT enabled, but unable to find ICU. Disable UNICODE_SUPPORT or fix ICU paths to proceed.")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
IF("$ENV{ICU_LIBRARY_DIR}" STREQUAL "")
|
||||
MESSAGE(STATUS "No ICU library directory specified")
|
||||
ElSE()
|
||||
SET(ICU_LIBRARY_DIR CACHE FILEPATH "ICU library files")
|
||||
IF(COLLADA_SUPPORT)
|
||||
# Find OpenCOLLADA
|
||||
IF("$ENV{OPENCOLLADA_INCLUDE_DIR}" STREQUAL "")
|
||||
MESSAGE(STATUS "No OpenCOLLADA include directory specified")
|
||||
SET(OPENCOLLADA_INCLUDE_DIR "/usr/local/include/opencollada" CACHE FILEPATH "OpenCOLLADA header files")
|
||||
ElSE()
|
||||
SET(OPENCOLLADA_INCLUDE_DIR "$ENV{OPENCOLLADA_INCLUDE_DIR}" CACHE FILEPATH "OpenCOLLADA header files")
|
||||
ENDIF()
|
||||
|
||||
IF("$ENV{OPENCOLLADA_LIBRARY_DIR}" STREQUAL "")
|
||||
MESSAGE(STATUS "No OpenCOLLADA library directory specified")
|
||||
SET(OPENCOLLADA_LIBRARY_DIR "/usr/local/lib/opencollada" CACHE FILEPATH "OpenCOLLADA library files")
|
||||
ElSE()
|
||||
SET(OPENCOLLADA_LIBRARY_DIR "$ENV{OPENCOLLADA_LIBRARY_DIR}" CACHE FILEPATH "OpenCOLLADA library files")
|
||||
ENDIF()
|
||||
|
||||
SET(OPENCOLLADA_INCLUDE_DIRS "${OPENCOLLADA_INCLUDE_DIR}/COLLADABaseUtils" "${OPENCOLLADA_INCLUDE_DIR}/COLLADAStreamWriter")
|
||||
|
||||
FIND_FILE(COLLADASWStreamWriter_h "COLLADASWStreamWriter.h" ${OPENCOLLADA_INCLUDE_DIRS})
|
||||
IF(COLLADASWStreamWriter_h)
|
||||
MESSAGE(STATUS "OpenCOLLADA header files found")
|
||||
ADD_DEFINITIONS(-DWITH_OPENCOLLADA)
|
||||
SET(OPENCOLLADA_LIBRARIES
|
||||
GeneratedSaxParser MathMLSolver OpenCOLLADABaseUtils OpenCOLLADAFramework OpenCOLLADASaxFrameworkLoader
|
||||
OpenCOLLADAStreamWriter UTF buffer ftoa pcre
|
||||
)
|
||||
IF(MSVC)
|
||||
ADD_DEBUG_VARIANTS(OPENCOLLADA_LIBRARIES "${OPENCOLLADA_LIBRARIES}" "d")
|
||||
ENDIF()
|
||||
ELSE()
|
||||
MESSAGE(FATAL_ERROR "COLLADA_SUPPORT enabled, but unable to find OpenCOLLADA. Disable COLLADA_SUPPORT or fix OpenCOLLADA paths to proceed.")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
FIND_LIBRARY(icu "icuuc" /usr/lib /usr/lib64 /usr/local/lib /usr/local/lib64 ${ICU_LIBRARY_DIR})
|
||||
# TODO Are these needed on other platforms still or can these be removed for good?
|
||||
IF (NOT WIN32)
|
||||
INCLUDE(CheckIncludeFileCXX)
|
||||
|
||||
IF(icu)
|
||||
MESSAGE(STATUS "ICU libraries found")
|
||||
ADD_DEFINITIONS(-DHAVE_ICU)
|
||||
SET(ICU_LIBRARIES icuuc icudata)
|
||||
ELSE()
|
||||
MESSAGE(STATUS "Unable to find ICU library files, continuing")
|
||||
MACRO(CHECK_ADD_OCE_OCC_DEF INCLUDE)
|
||||
STRING(REPLACE . _ STR ${INCLUDE})
|
||||
STRING(TOUPPER ${STR} STR)
|
||||
CHECK_INCLUDE_FILE_CXX("${INCLUDE}" FOUND_${STR})
|
||||
IF(FOUND_${STR})
|
||||
ADD_DEFINITIONS(-DOCE_HAVE_${STR})
|
||||
ADD_DEFINITIONS(-DHAVE_${STR})
|
||||
ENDIF(FOUND_${STR})
|
||||
ENDMACRO()
|
||||
|
||||
CHECK_ADD_OCE_OCC_DEF(limits)
|
||||
CHECK_ADD_OCE_OCC_DEF(climits)
|
||||
CHECK_ADD_OCE_OCC_DEF(limits.h)
|
||||
CHECK_ADD_OCE_OCC_DEF(fstream)
|
||||
CHECK_ADD_OCE_OCC_DEF(fstream.h)
|
||||
CHECK_ADD_OCE_OCC_DEF(iomanip)
|
||||
CHECK_ADD_OCE_OCC_DEF(iomanip.h)
|
||||
CHECK_ADD_OCE_OCC_DEF(iostream)
|
||||
CHECK_ADD_OCE_OCC_DEF(iostream.h)
|
||||
ENDIF()
|
||||
|
||||
IF("$ENV{OPENCOLLADA_INCLUDE_DIR}" STREQUAL "")
|
||||
MESSAGE(STATUS "No OpenCOLLADA include directory specified")
|
||||
SET(OPENCOLLADA_INCLUDE_DIR "/usr/local/include/opencollada" CACHE FILEPATH "OpenCOLLADA header files")
|
||||
ElSE()
|
||||
SET(OPENCOLLADA_INCLUDE_DIR "$ENV{OPENCOLLADA_INCLUDE_DIR}" CACHE FILEPATH "OpenCOLLADA header files")
|
||||
ENDIF()
|
||||
|
||||
IF("$ENV{OPENCOLLADA_LIBRARY_DIR}" STREQUAL "")
|
||||
MESSAGE(STATUS "No OpenCOLLADA library directory specified")
|
||||
SET(OPENCOLLADA_LIBRARY_DIR "/usr/local/lib/opencollada" CACHE FILEPATH "OpenCOLLADA library files")
|
||||
ElSE()
|
||||
SET(OPENCOLLADA_LIBRARY_DIR "$ENV{OPENCOLLADA_LIBRARY_DIR}" CACHE FILEPATH "OpenCOLLADA library files")
|
||||
ENDIF()
|
||||
|
||||
SET(OPENCOLLADA_INCLUDE_DIRS "${OPENCOLLADA_INCLUDE_DIR}/COLLADABaseUtils" "${OPENCOLLADA_INCLUDE_DIR}/COLLADAStreamWriter")
|
||||
|
||||
FIND_FILE(COLLADASWStreamWriter_h "COLLADASWStreamWriter.h" ${OPENCOLLADA_INCLUDE_DIRS})
|
||||
IF(COLLADASWStreamWriter_h)
|
||||
MESSAGE(STATUS "OpenCOLLADA header files found")
|
||||
ADD_DEFINITIONS(-DWITH_OPENCOLLADA)
|
||||
SET(OPENCOLLADA_LIBRARIES
|
||||
GeneratedSaxParser MathMLSolver OpenCOLLADABaseUtils
|
||||
OpenCOLLADAFramework OpenCOLLADASaxFrameworkLoader
|
||||
OpenCOLLADAStreamWriter UTF buffer ftoa pcre
|
||||
)
|
||||
ELSE()
|
||||
MESSAGE(STATUS "OpenCOLLADA header files not found, continuing without COLLADA support")
|
||||
ENDIF()
|
||||
|
||||
INCLUDE(CheckIncludeFileCXX)
|
||||
|
||||
MACRO(CHECK_ADD_OCE_OCC_DEF INCLUDE)
|
||||
STRING(REPLACE . _ STR ${INCLUDE})
|
||||
STRING(TOUPPER ${STR} STR)
|
||||
CHECK_INCLUDE_FILE_CXX("${INCLUDE}" FOUND_${STR})
|
||||
IF(FOUND_${STR})
|
||||
ADD_DEFINITIONS(-DOCE_HAVE_${STR})
|
||||
ADD_DEFINITIONS(-DHAVE_${STR})
|
||||
ENDIF(FOUND_${STR})
|
||||
ENDMACRO(CHECK_ADD_OCE_OCC_DEF)
|
||||
|
||||
CHECK_ADD_OCE_OCC_DEF(limits)
|
||||
CHECK_ADD_OCE_OCC_DEF(climits)
|
||||
CHECK_ADD_OCE_OCC_DEF(limits.h)
|
||||
CHECK_ADD_OCE_OCC_DEF(fstream)
|
||||
CHECK_ADD_OCE_OCC_DEF(fstream.h)
|
||||
CHECK_ADD_OCE_OCC_DEF(iomanip)
|
||||
CHECK_ADD_OCE_OCC_DEF(iomanip.h)
|
||||
CHECK_ADD_OCE_OCC_DEF(iostream)
|
||||
CHECK_ADD_OCE_OCC_DEF(iostream.h)
|
||||
|
||||
IF(NOT CMAKE_BUILD_TYPE)
|
||||
SET(CMAKE_BUILD_TYPE "Release")
|
||||
ENDIF(NOT CMAKE_BUILD_TYPE)
|
||||
SET(CMAKE_BUILD_TYPE "Release")
|
||||
ENDIF()
|
||||
|
||||
# NOTE: RelWithDebInfo and Release use O2 (= /Ox /Gl /Gy/ = Og /Oi /Ot /Oy /Ob2 /Gs /GF /Gy) by default,
|
||||
# with the exception with RelWithDebInfo has /Ob1 instead. /Ob2 has been observed to improve the performance
|
||||
# of IfcConvert significantly.
|
||||
# TODO Setting of /GL and /LTCG don't seem to apply for static libraries (IfcGeom, IfcParse)
|
||||
if(ENABLE_BUILD_OPTIMIZATIONS)
|
||||
if(MSVC)
|
||||
# C++
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Ob2 /GL")
|
||||
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELEASE} /Zi")
|
||||
# Linker
|
||||
# /OPT:REF enables also /OPT:ICF and disables INCREMENTAL
|
||||
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /LTCG /OPT:REF")
|
||||
# /OPT:NOICF is recommended when /DEBUG is used (http://msdn.microsoft.com/en-us/library/xe4t6fc1.aspx)
|
||||
set(CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /DEBUG /OPT:NOICF")
|
||||
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /LTCG /OPT:REF")
|
||||
set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /DEBUG /OPT:NOICF")
|
||||
else()
|
||||
#TODO GCC (& Clang?) optimizations
|
||||
message(STATUS "ENABLE_BUILD_OPTIMIZATIONS not implemented for GCC/non-MSVC compilers.)")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
IF(MSVC)
|
||||
ADD_DEFINITIONS(-D_UNICODE)
|
||||
ElSE(MSVC)
|
||||
ADD_DEFINITIONS(-fPIC -Wno-non-virtual-dtor)
|
||||
ENDIF(MSVC)
|
||||
# Disable warnings about unsafe C functions; we could use the safe C99 & C11 versions if we have no need for supporting old compilers.
|
||||
ADD_DEFINITIONS(-D_UNICODE -D_SCL_SECURE_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS)
|
||||
ADD_DEFINITIONS(-bigobj) # required for building the big ifcXXX.objs, https://msdn.microsoft.com/en-us/library/ms173499.aspx
|
||||
|
||||
INCLUDE_DIRECTORIES(${INCLUDE_DIRECTORIES} ${OCC_INCLUDE_DIR} ${OPENCOLLADA_INCLUDE_DIRS} /usr/inc /usr/local/inc /usr/local/include/oce ${ICU_INCLUDE_DIR} ${Boost_INCLUDE_DIRS})
|
||||
|
||||
ADD_LIBRARY(IfcParse STATIC
|
||||
../src/ifcparse/Ifc2x3-latebound.cpp
|
||||
../src/ifcparse/Ifc2x3.cpp
|
||||
../src/ifcparse/Ifc4-latebound.cpp
|
||||
../src/ifcparse/Ifc4.cpp
|
||||
../src/ifcparse/IfcCharacterDecoder.cpp
|
||||
../src/ifcparse/IfcGlobalId.cpp
|
||||
../src/ifcparse/IfcHierarchyHelper.cpp
|
||||
../src/ifcparse/IfcLateBoundEntity.cpp
|
||||
../src/ifcparse/IfcParse.cpp
|
||||
../src/ifcparse/IfcSIPrefix.cpp
|
||||
../src/ifcparse/IfcSpfHeader.cpp
|
||||
../src/ifcparse/IfcUtil.cpp
|
||||
../src/ifcparse/IfcWrite.cpp
|
||||
)
|
||||
|
||||
ADD_LIBRARY(IfcGeom STATIC
|
||||
../src/ifcgeom/IfcGeomCurves.cpp
|
||||
../src/ifcgeom/IfcGeomFaces.cpp
|
||||
../src/ifcgeom/IfcGeomFunctions.cpp
|
||||
../src/ifcgeom/IfcGeomHelpers.cpp
|
||||
../src/ifcgeom/IfcGeomMaterial.cpp
|
||||
../src/ifcgeom/IfcGeomRenderStyles.cpp
|
||||
../src/ifcgeom/IfcGeomRepresentation.cpp
|
||||
../src/ifcgeom/IfcGeomShapes.cpp
|
||||
../src/ifcgeom/IfcGeomWires.cpp
|
||||
../src/ifcgeom/IfcRegister.cpp
|
||||
)
|
||||
|
||||
IF(icu)
|
||||
TARGET_LINK_LIBRARIES(IfcParse icuuc)
|
||||
# Link against the static VC runtime
|
||||
FOREACH(flag CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_MINSIZEREL
|
||||
CMAKE_CXX_FLAGS_RELWITHDEBINFO CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE
|
||||
CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO)
|
||||
IF(${flag} MATCHES "/MD")
|
||||
STRING(REGEX REPLACE "/MD" "/MT" ${flag} "${${flag}}")
|
||||
ENDIF()
|
||||
IF(${flag} MATCHES "/MDd")
|
||||
STRING(REGEX REPLACE "/MDd" "/MTd" ${flag} "${${flag}}")
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
ElSE()
|
||||
ADD_DEFINITIONS(-fPIC -Wno-non-virtual-dtor)
|
||||
ENDIF()
|
||||
|
||||
INCLUDE_DIRECTORIES(${INCLUDE_DIRECTORIES} ${OCC_INCLUDE_DIR} ${OPENCOLLADA_INCLUDE_DIRS}
|
||||
${ICU_INCLUDE_DIR} ${Boost_INCLUDE_DIRS}
|
||||
)
|
||||
if(NOT WIN32)
|
||||
INCLUDE_DIRECTORIES(${INCLUDE_DIRECTORIES} /usr/inc /usr/local/inc /usr/local/include/oce)
|
||||
endif()
|
||||
|
||||
IF(USE_IFC4)
|
||||
ADD_DEFINITIONS(-DUSE_IFC4)
|
||||
ELSE()
|
||||
ADD_DEFINITIONS(-DUSE_IFC2x3) # TODO Make all caps? i.e. USE_IFC2X3
|
||||
ENDIF()
|
||||
|
||||
# IfcParse
|
||||
file(GLOB CPP_FILES ../src/ifcparse/*.cpp)
|
||||
file(GLOB H_FILES ../src/ifcparse/*.h)
|
||||
set(SOURCE_FILES ${CPP_FILES} ${H_FILES})
|
||||
ADD_LIBRARY(IfcParse STATIC ${SOURCE_FILES})
|
||||
IF(UNICODE_SUPPORT)
|
||||
TARGET_LINK_LIBRARIES(IfcParse ${ICU_LIBRARIES})
|
||||
ENDIF()
|
||||
|
||||
# IfcGeom
|
||||
file(GLOB CPP_FILES ../src/ifcgeom/*.cpp)
|
||||
file(GLOB H_FILES ../src/ifcgeom/*.h)
|
||||
set(SOURCE_FILES ${CPP_FILES} ${H_FILES})
|
||||
ADD_LIBRARY(IfcGeom STATIC ${SOURCE_FILES})
|
||||
|
||||
TARGET_LINK_LIBRARIES(IfcGeom IfcParse)
|
||||
|
||||
LINK_DIRECTORIES (${LINK_DIRECTORIES} ${IfcOpenShell_BINARY_DIR} ${OCC_LIBRARY_DIR} ${OPENCOLLADA_LIBRARY_DIR} /usr/lib /usr/lib64 /usr/local/lib /usr/local/lib64 ${ICU_LIBRARY_DIR} ${Boost_LIBRARY_DIRS})
|
||||
|
||||
ADD_EXECUTABLE(IfcConvert
|
||||
../src/ifcconvert/ColladaSerializer.cpp
|
||||
../src/ifcconvert/IfcConvert.cpp
|
||||
../src/ifcconvert/OpenCascadeBasedSerializer.cpp
|
||||
../src/ifcconvert/WavefrontObjSerializer.cpp
|
||||
../src/ifcconvert/XmlSerializer.cpp
|
||||
../src/ifcconvert/SvgSerializer.cpp
|
||||
../src/ifcconvert/util.cpp
|
||||
LINK_DIRECTORIES(${LINK_DIRECTORIES} ${IfcOpenShell_BINARY_DIR} ${OCC_LIBRARY_DIR} ${OPENCOLLADA_LIBRARY_DIR}
|
||||
${ICU_LIBRARY_DIR} ${Boost_LIBRARY_DIRS}
|
||||
)
|
||||
if(NOT WIN32)
|
||||
LINK_DIRECTORIES(${LINK_DIRECTORIES} /usr/lib /usr/lib64 /usr/local/lib /usr/local/lib64)
|
||||
endif()
|
||||
|
||||
TARGET_LINK_LIBRARIES (IfcConvert IfcParse IfcGeom TKernel TKMath TKBRep TKGeomBase TKGeomAlgo TKG3d TKG2d TKShHealing TKTopAlgo TKMesh TKPrim TKBool TKBO TKFillet TKSTEP TKSTEPBase TKSTEPAttr TKXSBase TKSTEP209 TKIGES TKOffset ${Boost_LIBRARIES} ${OPENCOLLADA_LIBRARIES} ${ICU_LIBRARIES})
|
||||
# IfcConvert
|
||||
# TODO
|
||||
# if (IFCCONVERT_DOUBLE_PRECISION)
|
||||
# add_definitions(-DIFCCONVERT_DOUBLE_PRECISION)
|
||||
# endif()
|
||||
file(GLOB CPP_FILES ../src/ifcconvert/*.cpp)
|
||||
file(GLOB H_FILES ../src/ifcconvert/*.h)
|
||||
set(SOURCE_FILES ${CPP_FILES} ${H_FILES})
|
||||
ADD_EXECUTABLE(IfcConvert ${SOURCE_FILES})
|
||||
|
||||
ADD_EXECUTABLE(IfcGeomServer
|
||||
../src/ifcgeomserver/IfcGeomServer.cpp
|
||||
)
|
||||
TARGET_LINK_LIBRARIES(IfcConvert IfcParse IfcGeom ${OPENCASCADE_LIBRARIES} ${Boost_LIBRARIES} ${OPENCOLLADA_LIBRARIES} ${ICU_LIBRARIES})
|
||||
|
||||
TARGET_LINK_LIBRARIES (IfcGeomServer IfcParse IfcGeom TKernel TKMath TKBRep TKGeomBase TKGeomAlgo TKG3d TKG2d TKShHealing TKTopAlgo TKMesh TKPrim TKBool TKBO TKFillet TKSTEP TKSTEPBase TKSTEPAttr TKXSBase TKSTEP209 TKIGES TKOffset ${ICU_LIBRARIES})
|
||||
# IfcGeomServer
|
||||
file(GLOB CPP_FILES ../src/ifcgeomserver/*.cpp)
|
||||
file(GLOB H_FILES ../src/ifcgeomserver/*.h)
|
||||
set(SOURCE_FILES ${CPP_FILES} ${H_FILES})
|
||||
ADD_EXECUTABLE(IfcGeomServer ${SOURCE_FILES})
|
||||
|
||||
# Build python wrapper using separate CMakeLists.txt
|
||||
ADD_SUBDIRECTORY(../src/ifcwrap ifcwrap)
|
||||
TARGET_LINK_LIBRARIES(IfcGeomServer IfcParse IfcGeom ${OPENCASCADE_LIBRARIES} ${Boost_LIBRARIES} ${ICU_LIBRARIES})
|
||||
|
||||
# Build IfcParseExamples using separate CMakeLists.txt
|
||||
ADD_SUBDIRECTORY(../src/examples examples)
|
||||
IF(BUILD_IFCPYTHON)
|
||||
ADD_SUBDIRECTORY(../src/ifcwrap ifcwrap)
|
||||
ENDIF()
|
||||
|
||||
# ADD_SUBDIRECTORY(../src/qtviewer qtviewer)
|
||||
IF(BUILD_EXAMPLES)
|
||||
ADD_SUBDIRECTORY(../src/examples examples)
|
||||
ENDIF()
|
||||
|
||||
# TODO QtViewer is deprecated ATM as it uses the 0.4 API
|
||||
# IF(BUILD_QTVIEWER)
|
||||
# ADD_SUBDIRECTORY(../src/qtviewer qtviewer)
|
||||
# ENDIF()
|
||||
|
||||
# CMake installation targets
|
||||
SET(include_files_geom
|
||||
../src/ifcgeom/IfcGeom.h
|
||||
../src/ifcgeom/IfcGeomElement.h
|
||||
../src/ifcgeom/IfcGeomIterator.h
|
||||
../src/ifcgeom/IfcGeomIteratorSettings.h
|
||||
../src/ifcgeom/IfcGeomMaterial.h
|
||||
../src/ifcgeom/IfcGeomRenderStyles.h
|
||||
../src/ifcgeom/IfcGeomRepresentation.h
|
||||
../src/ifcgeom/IfcGeomShapeType.h
|
||||
../src/ifcgeom/IfcRegister.h
|
||||
../src/ifcgeom/IfcRegisterConvertCurve.h
|
||||
../src/ifcgeom/IfcRegisterConvertFace.h
|
||||
../src/ifcgeom/IfcRegisterConvertShape.h
|
||||
../src/ifcgeom/IfcRegisterConvertShapes.h
|
||||
../src/ifcgeom/IfcRegisterConvertWire.h
|
||||
../src/ifcgeom/IfcRegisterCreateCache.h
|
||||
../src/ifcgeom/IfcRegisterDef.h
|
||||
../src/ifcgeom/IfcRegisterGeomHeader.h
|
||||
../src/ifcgeom/IfcRegisterPurgeCache.h
|
||||
../src/ifcgeom/IfcRegisterShapeType.h
|
||||
../src/ifcgeom/IfcRegisterUndef.h
|
||||
../src/ifcgeom/IfcRepresentationShapeItem.h
|
||||
)
|
||||
|
||||
SET(include_files_parse
|
||||
../src/ifcparse/Ifc2x3-latebound.h
|
||||
../src/ifcparse/Ifc2x3.h
|
||||
../src/ifcparse/Ifc2x3enum.h
|
||||
../src/ifcparse/Ifc4-latebound.h
|
||||
../src/ifcparse/Ifc4.h
|
||||
../src/ifcparse/Ifc4enum.h
|
||||
../src/ifcparse/IfcCharacterDecoder.h
|
||||
../src/ifcparse/IfcEntityDescriptor.h
|
||||
../src/ifcparse/IfcException.h
|
||||
../src/ifcparse/IfcFile.h
|
||||
../src/ifcparse/IfcGlobalId.h
|
||||
../src/ifcparse/IfcHierarchyHelper.h
|
||||
../src/ifcparse/IfcLateBoundEntity.h
|
||||
../src/ifcparse/IfcParse.h
|
||||
../src/ifcparse/IfcSIPrefix.h
|
||||
../src/ifcparse/IfcSpfHeader.h
|
||||
../src/ifcparse/IfcSpfStream.h
|
||||
../src/ifcparse/IfcUtil.h
|
||||
../src/ifcparse/IfcWritableEntity.h
|
||||
../src/ifcparse/IfcWrite.h
|
||||
../src/ifcparse/SharedPointer.h
|
||||
)
|
||||
FILE(GLOB include_files_geom ../src/ifcgeom/*.h)
|
||||
FILE(GLOB include_files_parse ../src/ifcparse/*.h)
|
||||
INSTALL(FILES ${include_files_geom} DESTINATION include/ifcgeom)
|
||||
INSTALL(FILES ${include_files_parse} DESTINATION include/ifcparse)
|
||||
INSTALL(TARGETS IfcConvert DESTINATION bin)
|
||||
INSTALL(TARGETS IfcConvert IfcGeomServer DESTINATION bin)
|
||||
INSTALL(TARGETS IfcParse IfcGeom DESTINATION lib)
|
||||
|
||||
@@ -1,5 +1,24 @@
|
||||
################################################################################
|
||||
# #
|
||||
# This file is part of IfcOpenShell. #
|
||||
# #
|
||||
# IfcOpenShell is free software: you can redistribute it and/or modify #
|
||||
# it under the terms of the Lesser GNU General Public License as published by #
|
||||
# the Free Software Foundation, either version 3.0 of the License, or #
|
||||
# (at your option) any later version. #
|
||||
# #
|
||||
# IfcOpenShell is distributed in the hope that it will be useful, #
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
|
||||
# Lesser GNU General Public License for more details. #
|
||||
# #
|
||||
# You should have received a copy of the Lesser GNU General Public License #
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>. #
|
||||
# #
|
||||
################################################################################
|
||||
|
||||
ADD_EXECUTABLE(IfcParseExamples IfcParseExamples.cpp)
|
||||
TARGET_LINK_LIBRARIES (IfcParseExamples IfcParse)
|
||||
TARGET_LINK_LIBRARIES(IfcParseExamples IfcParse)
|
||||
|
||||
ADD_EXECUTABLE(IfcOpenHouse IfcOpenHouse.cpp)
|
||||
TARGET_LINK_LIBRARIES (IfcOpenHouse IfcParse IfcGeom TKernel TKMath TKBRep TKGeomBase TKGeomAlgo TKG3d TKG2d TKShHealing TKTopAlgo TKMesh TKPrim TKBool TKBO TKFillet TKOffset)
|
||||
TARGET_LINK_LIBRARIES(IfcOpenHouse IfcParse IfcGeom ${OPENCASCADE_LIBRARIES})
|
||||
|
||||
@@ -39,8 +39,8 @@ void ColladaSerializer::ColladaExporter::ColladaGeometries::addFloatSource(const
|
||||
COLLADASW::FloatSource source(mSW);
|
||||
source.setId(mesh_id + suffix);
|
||||
source.setArrayId(mesh_id + suffix + COLLADASW::LibraryGeometries::ARRAY_ID_SUFFIX);
|
||||
source.setAccessorStride(strlen(coords));
|
||||
source.setAccessorCount(floats.size() / 3);
|
||||
source.setAccessorStride((unsigned long)strlen(coords));
|
||||
source.setAccessorCount((unsigned long)floats.size() / 3);
|
||||
for (unsigned int i = 0; i < source.getAccessorStride(); ++i) {
|
||||
source.getParameterNameList().push_back(std::string(1, coords[i]));
|
||||
}
|
||||
@@ -73,7 +73,7 @@ void ColladaSerializer::ColladaExporter::ColladaGeometries::write(const std::str
|
||||
int previous_material_id = -1;
|
||||
for (std::vector<int>::const_iterator it = faces.begin(); !faces.empty(); it += 3) {
|
||||
const int current_material_id = *(material_it++);
|
||||
const int num_triangles = std::distance(index_range_start, it) / 3;
|
||||
const unsigned long num_triangles = (unsigned long)std::distance(index_range_start, it) / 3;
|
||||
if ((previous_material_id != current_material_id && num_triangles > 0) || (it == faces.end())) {
|
||||
COLLADASW::Triangles triangles(mSW);
|
||||
triangles.setMaterial(materials[previous_material_id].name());
|
||||
@@ -126,7 +126,7 @@ void ColladaSerializer::ColladaExporter::ColladaGeometries::write(const std::str
|
||||
for (linelist_t::const_iterator it = linelist.begin(); it != linelist.end(); ++it) {
|
||||
COLLADASW::Lines lines(mSW);
|
||||
lines.setMaterial(materials[it->first].name());
|
||||
lines.setCount(it->second.size());
|
||||
lines.setCount((unsigned long)it->second.size());
|
||||
int offset = 0;
|
||||
lines.getInputList().push_back(COLLADASW::Input(COLLADASW::InputSemantic::VERTEX, "#" + mesh_id + COLLADASW::LibraryGeometries::VERTICES_ID_SUFFIX, 0));
|
||||
lines.prepareToAppendValues();
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
#include <Geom_Circle.hxx>
|
||||
#include <Geom_Ellipse.hxx>
|
||||
#include <gp_Ax22d.hxx>
|
||||
|
||||
#include <Standard_Version.hxx>
|
||||
#include "../ifcparse/IfcGlobalId.h"
|
||||
|
||||
#include "SvgSerializer.h"
|
||||
|
||||
@@ -72,7 +72,7 @@ void WaveFrontOBJSerializer::write(const IfcGeom::TriangulationElement<double>*
|
||||
|
||||
const IfcGeom::Representation::Triangulation<double>& mesh = o->geometry();
|
||||
|
||||
const int vcount = mesh.verts().size() / 3;
|
||||
const int vcount = (int)mesh.verts().size() / 3;
|
||||
for ( std::vector<double>::const_iterator it = mesh.verts().begin(); it != mesh.verts().end(); ) {
|
||||
const double x = *(it++);
|
||||
const double y = *(it++);
|
||||
|
||||
@@ -149,8 +149,8 @@ bool IfcGeom::Kernel::convert(const IfcSchema::IfcBSplineCurveWithKnots* l, Hand
|
||||
const std::vector<double> knots = l->Knots();
|
||||
|
||||
TColgp_Array1OfPnt Poles(0, cps->size() - 1);
|
||||
TColStd_Array1OfReal Knots(0, knots.size() - 1);
|
||||
TColStd_Array1OfInteger Mults(0, mults.size() - 1);
|
||||
TColStd_Array1OfReal Knots(0, (int)knots.size() - 1);
|
||||
TColStd_Array1OfInteger Mults(0, (int)mults.size() - 1);
|
||||
Standard_Integer Degree = l->Degree();
|
||||
Standard_Boolean Periodic = l->ClosedCurve();
|
||||
|
||||
|
||||
@@ -899,11 +899,11 @@ bool IfcGeom::Kernel::convert(const IfcSchema::IfcBSplineSurfaceWithKnots* l, To
|
||||
std::vector<int> umults = l->UMultiplicities();
|
||||
std::vector<int> vmults = l->VMultiplicities();
|
||||
|
||||
TColgp_Array2OfPnt Poles (0, cps->size() - 1, 0, (*cps->begin()).size() - 1);
|
||||
TColStd_Array1OfReal UKnots(0, uknots.size() - 1);
|
||||
TColStd_Array1OfReal VKnots(0, vknots.size() - 1);
|
||||
TColStd_Array1OfInteger UMults(0, umults.size() - 1);
|
||||
TColStd_Array1OfInteger VMults(0, vmults.size() - 1);
|
||||
TColgp_Array2OfPnt Poles (0, (int)cps->size() - 1, 0, (int)(*cps->begin()).size() - 1);
|
||||
TColStd_Array1OfReal UKnots(0, (int)uknots.size() - 1);
|
||||
TColStd_Array1OfReal VKnots(0, (int)vknots.size() - 1);
|
||||
TColStd_Array1OfInteger UMults(0, (int)umults.size() - 1);
|
||||
TColStd_Array1OfInteger VMults(0, (int)vmults.size() - 1);
|
||||
Standard_Integer UDegree = l->UDegree();
|
||||
Standard_Integer VDegree = l->VDegree();
|
||||
|
||||
|
||||
@@ -123,10 +123,10 @@ namespace IfcGeom {
|
||||
Material adapter(&it->Style());
|
||||
std::vector<Material>::const_iterator jt = std::find(_materials.begin(), _materials.end(), adapter);
|
||||
if (jt == _materials.end()) {
|
||||
surface_style_id = _materials.size();
|
||||
surface_style_id = (int)_materials.size();
|
||||
_materials.push_back(adapter);
|
||||
} else {
|
||||
surface_style_id = jt - _materials.begin();
|
||||
surface_style_id = (int)(jt - _materials.begin());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -134,10 +134,10 @@ namespace IfcGeom {
|
||||
Material material(IfcGeom::get_default_style(settings().element_type()));
|
||||
std::vector<Material>::const_iterator it = std::find(_materials.begin(), _materials.end(), material);
|
||||
if (it == _materials.end()) {
|
||||
surface_style_id = _materials.size();
|
||||
surface_style_id = (int)_materials.size();
|
||||
_materials.push_back(material);
|
||||
} else {
|
||||
surface_style_id = it - _materials.begin();
|
||||
surface_style_id = (int)(it - _materials.begin());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -251,7 +251,7 @@ namespace IfcGeom {
|
||||
BRepAdaptor_Curve crv(TopoDS::Edge(exp.Current()));
|
||||
GCPnts_QuasiUniformDeflection tessellater(crv, settings().deflection_tolerance());
|
||||
int n = tessellater.NbPoints();
|
||||
int start = _verts.size() / 3;
|
||||
int start = (int)_verts.size() / 3;
|
||||
for (int i = 1; i <= n; ++i) {
|
||||
gp_XYZ p = tessellater.Value(i).XYZ();
|
||||
trsf.Transforms(p);
|
||||
|
||||
@@ -399,7 +399,7 @@ bool IfcGeom::Kernel::convert(const IfcSchema::IfcBooleanResult* l, TopoDS_Shape
|
||||
bool IfcGeom::Kernel::convert(const IfcSchema::IfcConnectedFaceSet* l, TopoDS_Shape& shape) {
|
||||
IfcSchema::IfcFace::list::ptr faces = l->CfsFaces();
|
||||
bool facesAdded = false;
|
||||
const unsigned int num_faces = faces->size();
|
||||
const unsigned int num_faces = (unsigned)faces->size();
|
||||
bool valid_shell = false;
|
||||
if ( num_faces < getValue(GV_MAX_FACES_TO_SEW) ) {
|
||||
BRepOffsetAPI_Sewing builder;
|
||||
@@ -882,7 +882,7 @@ bool IfcGeom::Kernel::convert(const IfcSchema::IfcTriangulatedFaceSet* l, TopoDS
|
||||
|
||||
if (faces.empty()) return false;
|
||||
|
||||
const unsigned int num_faces = indices.size();
|
||||
const unsigned int num_faces = (unsigned)indices.size();
|
||||
bool valid_shell = false;
|
||||
|
||||
if (faces.size() < getValue(GV_MAX_FACES_TO_SEW)) {
|
||||
|
||||
@@ -69,7 +69,7 @@ void swrite(std::ostream& s, T t) {
|
||||
|
||||
template <>
|
||||
void swrite(std::ostream& s, std::string t) {
|
||||
int32_t len = t.size();
|
||||
int32_t len = (int32_t)t.size();
|
||||
swrite(s, len);
|
||||
s.write(t.c_str(), len);
|
||||
while (len++ % 4) s.put(0);
|
||||
@@ -323,7 +323,7 @@ int main (int argc, char** argv) {
|
||||
settings.convert_back_units() = true;
|
||||
settings.include_curves() = true;
|
||||
|
||||
iterator = new IfcGeom::Iterator<float>(settings, data, len);
|
||||
iterator = new IfcGeom::Iterator<float>(settings, data, (int)len);
|
||||
has_more = iterator->initialize();
|
||||
|
||||
More(has_more).write(std::cout);
|
||||
|
||||
@@ -135,7 +135,7 @@ IfcCharacterDecoder::operator std::string() {
|
||||
#ifdef HAVE_ICU
|
||||
if ( previous_codepage != codepage ) {
|
||||
if ( converter ) ucnv_close(converter);
|
||||
char encoder[11] = {'i','s','o','-','8','8','5','9','-',codepage + 0x30};
|
||||
char encoder[11] = {'i','s','o','-','8','8','5','9','-', (char)codepage + 0x30};
|
||||
converter = ucnv_open(encoder, &status);
|
||||
}
|
||||
const char characters[2] = { current_char + 0x80 };
|
||||
@@ -188,7 +188,7 @@ IfcCharacterDecoder::operator std::string() {
|
||||
if (old_hex == 0) {
|
||||
old_hex = hex;
|
||||
} else {
|
||||
char characters[3] = { old_hex, hex };
|
||||
char characters[3] = { (char)old_hex, (char)hex };
|
||||
const char* char_array = &characters[0];
|
||||
UChar32 ch = ucnv_getNextUChar(compatibility_converter,&char_array,char_array+2,&status);
|
||||
addChar(s,ch);
|
||||
|
||||
@@ -48,7 +48,7 @@ namespace IfcUtil {
|
||||
std::pair<const char*, int> getIndex(const std::string& value) const {
|
||||
std::vector<std::string>::const_iterator it = std::find(values.begin(), values.end(), value);
|
||||
if (it != values.end()) {
|
||||
return std::make_pair(it->c_str(), std::distance(it, values.begin()));
|
||||
return std::make_pair(it->c_str(), (int)std::distance(it, values.begin()));
|
||||
} else {
|
||||
throw IfcParse::IfcException("Invalid enumeration value");
|
||||
}
|
||||
@@ -91,7 +91,7 @@ namespace IfcUtil {
|
||||
arguments.push_back(IfcArgumentDescriptor(name, optional, argument_type, data_type));
|
||||
}
|
||||
unsigned getArgumentCount() const {
|
||||
return (parent ? parent->getArgumentCount() : 0) + arguments.size();
|
||||
return (parent ? parent->getArgumentCount() : 0) + (unsigned)arguments.size();
|
||||
}
|
||||
const std::string& getArgumentName(unsigned i) const {
|
||||
const unsigned a = argument_start();
|
||||
|
||||
@@ -52,7 +52,7 @@ unsigned from_base64(const std::string& s) {
|
||||
r *= 64;
|
||||
const char* c = strchr(chars,*i);
|
||||
if ( !c ) throw IfcParse::IfcException("Failed to decode GlobalId");
|
||||
r += (c-chars);
|
||||
r += (unsigned)(c-chars);
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
@@ -467,7 +467,7 @@ boost::dynamic_bitset<> TokenFunc::asBinary(const Token& t) {
|
||||
}
|
||||
|
||||
++it;
|
||||
unsigned i = (str.size()-1) * 4 - n;
|
||||
unsigned i = ((unsigned)str.size()-1) * 4 - n;
|
||||
boost::dynamic_bitset<> bitset(i);
|
||||
|
||||
for(; it != str.end(); ++it) {
|
||||
|
||||
@@ -187,11 +187,11 @@ public:
|
||||
}
|
||||
outer_it begin() const { return ls.begin(); }
|
||||
outer_it end() const { return ls.end(); }
|
||||
int size() const { return ls.size(); }
|
||||
int size() const { return (int)ls.size(); }
|
||||
int totalSize() const {
|
||||
int accum = 0;
|
||||
for (outer_it it = begin(); it != end(); ++it) {
|
||||
accum += it->size();
|
||||
accum += (int)it->size();
|
||||
}
|
||||
return accum;
|
||||
}
|
||||
@@ -230,7 +230,7 @@ public:
|
||||
void push(const std::vector<T*>& t) {ls.push_back(t);}
|
||||
outer_it begin() { return ls.begin(); }
|
||||
outer_it end() { return ls.end(); }
|
||||
int size() const { return ls.size(); }
|
||||
int size() const { return (int)ls.size(); }
|
||||
int totalSize() const {
|
||||
int accum = 0;
|
||||
for (outer_it it = begin(); it != end(); ++it) {
|
||||
|
||||
@@ -84,7 +84,7 @@ Argument* IfcWritableEntity::getArgument (unsigned int i) {
|
||||
}
|
||||
return args[i];
|
||||
}
|
||||
unsigned int IfcWritableEntity::getArgumentCount() const {return args.size(); }
|
||||
unsigned int IfcWritableEntity::getArgumentCount() const { return (unsigned)args.size(); }
|
||||
IfcSchema::Type::Enum IfcWritableEntity::type() const { return _type; }
|
||||
bool IfcWritableEntity::is(IfcSchema::Type::Enum v) const { return _type == v; }
|
||||
std::string IfcWritableEntity::toString(bool upper) const {
|
||||
@@ -298,12 +298,12 @@ public:
|
||||
int operator()(const double& i) const { return -1; }
|
||||
int operator()(const std::string& i) const { return -1; }
|
||||
int operator()(const boost::dynamic_bitset<>& i) const { return -1; }
|
||||
int operator()(const std::vector<int>& i) const { return i.size(); }
|
||||
int operator()(const std::vector<double>& i) const { return i.size(); }
|
||||
int operator()(const std::vector< std::vector<int> >& i) const { return i.size(); }
|
||||
int operator()(const std::vector< std::vector<double> >& i) const { return i.size(); }
|
||||
int operator()(const std::vector<std::string>& i) const { return i.size(); }
|
||||
int operator()(const std::vector< boost::dynamic_bitset<> >& i) const { return i.size(); }
|
||||
int operator()(const std::vector<int>& i) const { return (int)i.size(); }
|
||||
int operator()(const std::vector<double>& i) const { return (int)i.size(); }
|
||||
int operator()(const std::vector< std::vector<int> >& i) const { return (int)i.size(); }
|
||||
int operator()(const std::vector< std::vector<double> >& i) const { return (int)i.size(); }
|
||||
int operator()(const std::vector<std::string>& i) const { return (int)i.size(); }
|
||||
int operator()(const std::vector< boost::dynamic_bitset<> >& i) const { return (int)i.size(); }
|
||||
int operator()(const IfcWriteArgument::EnumerationReference& i) const { return -1; }
|
||||
int operator()(const IfcUtil::IfcBaseClass* const& i) const { return -1; }
|
||||
int operator()(const IfcEntityList::ptr& i) const { return i->size(); }
|
||||
@@ -351,7 +351,7 @@ private:
|
||||
oss.imbue(std::locale::classic());
|
||||
oss.put('"');
|
||||
oss << std::hex << std::setw(1);
|
||||
unsigned c = b.size();
|
||||
unsigned c = (unsigned)b.size();
|
||||
unsigned n = (4 - (c % 4)) & 3;
|
||||
oss << n;
|
||||
for (unsigned i = 0; i < c + n;) {
|
||||
|
||||
+51
-14
@@ -1,37 +1,74 @@
|
||||
################################################################################
|
||||
# #
|
||||
# This file is part of IfcOpenShell. #
|
||||
# #
|
||||
# IfcOpenShell is free software: you can redistribute it and/or modify #
|
||||
# it under the terms of the Lesser GNU General Public License as published by #
|
||||
# the Free Software Foundation, either version 3.0 of the License, or #
|
||||
# (at your option) any later version. #
|
||||
# #
|
||||
# IfcOpenShell is distributed in the hope that it will be useful, #
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
|
||||
# Lesser GNU General Public License for more details. #
|
||||
# #
|
||||
# You should have received a copy of the Lesser GNU General Public License #
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>. #
|
||||
# #
|
||||
################################################################################
|
||||
|
||||
FIND_PACKAGE(SWIG)
|
||||
IF(NOT SWIG_FOUND)
|
||||
MESSAGE(FATAL_ERROR "BUILD_IFCPYTHON enabled, but unable to find SWIG. Disable BUILD_IFCPYTHON or fix SWIG paths to proceed.")
|
||||
ENDIF()
|
||||
|
||||
IF(SWIG_FOUND)
|
||||
INCLUDE(${SWIG_USE_FILE})
|
||||
|
||||
INCLUDE(${SWIG_USE_FILE})
|
||||
IF(NOT "$ENV{PYTHON_INCLUDE_DIR}" STREQUAL "")
|
||||
SET(PYTHON_INCLUDE_DIR $ENV{PYTHON_INCLUDE_DIR} CACHE FILEPATH "Python header files")
|
||||
MESSAGE(STATUS "Looking for Python header files in: ${PYTHON_INCLUDE_DIR}")
|
||||
ENDIF()
|
||||
IF(NOT "$ENV{PYTHON_LIBRARY}" STREQUAL "")
|
||||
SET(PYTHON_LIBRARY $ENV{PYTHON_LIBRARY} CACHE FILEPATH "Python library file")
|
||||
MESSAGE(STATUS "Looking for Python library file in: ${PYTHON_LIBRARY}")
|
||||
ENDIF()
|
||||
|
||||
FIND_PACKAGE(PythonLibs)
|
||||
|
||||
IF(PYTHONLIBS_FOUND)
|
||||
IF(NOT PYTHONLIBS_FOUND)
|
||||
MESSAGE(FATAL_ERROR "BUILD_IFCPYTHON enabled, but unable to find Python. Disable BUILD_IFCPYTHON or fix Python paths to proceed.")
|
||||
ENDIF()
|
||||
|
||||
INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_PATH})
|
||||
|
||||
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR})
|
||||
|
||||
SET(CMAKE_SWIG_FLAGS "")
|
||||
# NOTE Workaround for most likely missing debug Python libraries on Windows (requires Python built from the source).
|
||||
# Python 3.5 intaller and onwards will have an option to install the debug libraries too.
|
||||
IF (WIN32 AND NOT PYTHON_DEBUG_LIBRARIES)
|
||||
MESSAGE(STATUS "PYTHON_DEBUG_LIBRARIES not found, defining SWIG_PYTHON_INTERPRETER_NO_DEBUG workaround for IfcWrap.")
|
||||
ADD_DEFINITIONS(-DSWIG_PYTHON_INTERPRETER_NO_DEBUG)
|
||||
ENDIF()
|
||||
|
||||
SET_SOURCE_FILES_PROPERTIES(IfcPython.i PROPERTIES CPLUSPLUS ON)
|
||||
SWIG_ADD_MODULE(ifcopenshell_wrapper python IfcPython.i)
|
||||
SWIG_LINK_LIBRARIES(ifcopenshell_wrapper ${PYTHON_LIBRARIES} IfcParse IfcGeom TKernel TKMath TKBRep TKGeomBase TKGeomAlgo TKG3d TKG2d TKShHealing TKTopAlgo TKMesh TKPrim TKBool TKBO TKFillet TKOffset ${ICU_LIBRARIES})
|
||||
SWIG_LINK_LIBRARIES(ifcopenshell_wrapper IfcParse IfcGeom ${PYTHON_LIBRARIES} ${OPENCASCADE_LIBRARIES} ${ICU_LIBRARIES})
|
||||
|
||||
# To install IfcPython let's get the site-packages dir from python
|
||||
EXECUTE_PROCESS(COMMAND python -c "import sys; from distutils.sysconfig import get_python_lib; sys.stdout.write(get_python_lib())"
|
||||
EXECUTE_PROCESS(COMMAND
|
||||
python -c "import sys; from distutils.sysconfig import get_python_lib; sys.stdout.write(get_python_lib())"
|
||||
OUTPUT_VARIABLE python_package_dir)
|
||||
|
||||
IF("${python_package_dir}" STREQUAL "")
|
||||
MESSAGE(FATAL_ERROR "Python executable not in PATH, aborting")
|
||||
ENDIF()
|
||||
|
||||
INSTALL(FILES
|
||||
"${CMAKE_BINARY_DIR}/ifcwrap/ifcopenshell_wrapper.py"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/../ifcopenshell-python/ifcopenshell/__init__.py"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/../ifcopenshell-python/ifcopenshell/guid.py"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/../ifcopenshell-python/ifcopenshell/__init__.py"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/../ifcopenshell-python/ifcopenshell/guid.py"
|
||||
DESTINATION "${python_package_dir}/ifcopenshell")
|
||||
INSTALL(FILES
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/../ifcopenshell-python/ifcopenshell/geom/__init__.py"
|
||||
DESTINATION "${python_package_dir}/ifcopenshell/geom")
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/../ifcopenshell-python/ifcopenshell/geom/__init__.py"
|
||||
DESTINATION "${python_package_dir}/ifcopenshell/geom")
|
||||
INSTALL(TARGETS _ifcopenshell_wrapper DESTINATION "${python_package_dir}/ifcopenshell")
|
||||
|
||||
ENDIF(PYTHONLIBS_FOUND)
|
||||
|
||||
ENDIF(SWIG_FOUND)
|
||||
@@ -17,6 +17,27 @@
|
||||
* *
|
||||
********************************************************************************/
|
||||
|
||||
%begin %{
|
||||
#if defined(_DEBUG) && defined(SWIG_PYTHON_INTERPRETER_NO_DEBUG)
|
||||
/* https://github.com/swig/swig/issues/325 */
|
||||
# include <basetsd.h>
|
||||
# include <assert.h>
|
||||
# include <ctype.h>
|
||||
# include <errno.h>
|
||||
# include <io.h>
|
||||
# include <math.h>
|
||||
# include <sal.h>
|
||||
# include <stdarg.h>
|
||||
# include <stddef.h>
|
||||
# include <stdio.h>
|
||||
# include <stdlib.h>
|
||||
# include <string.h>
|
||||
# include <sys/stat.h>
|
||||
# include <time.h>
|
||||
# include <wchar.h>
|
||||
#endif
|
||||
%}
|
||||
|
||||
%include "std_string.i"
|
||||
%include "exception.i"
|
||||
|
||||
|
||||
@@ -132,9 +132,9 @@
|
||||
|
||||
template <typename T>
|
||||
PyObject* pythonize_vector(const std::vector<T>& v) {
|
||||
const unsigned size = v.size();
|
||||
const size_t size = v.size();
|
||||
PyObject* pyobj = PyTuple_New(size);
|
||||
for (unsigned int i = 0; i < size; ++i) {
|
||||
for (size_t i = 0; i < size; ++i) {
|
||||
PyTuple_SetItem(pyobj, i, pythonize(v[i]));
|
||||
}
|
||||
return pyobj;
|
||||
@@ -142,9 +142,9 @@
|
||||
|
||||
template <typename T>
|
||||
PyObject* pythonize_vector2(const std::vector< std::vector<T> >& v) {
|
||||
const unsigned size = v.size();
|
||||
const size_t size = v.size();
|
||||
PyObject* pyobj = PyTuple_New(size);
|
||||
for (unsigned int i = 0; i < size; ++i) {
|
||||
for (size_t i = 0; i < size; ++i) {
|
||||
PyTuple_SetItem(pyobj, i, pythonize_vector(v[i]));
|
||||
}
|
||||
return pyobj;
|
||||
|
||||
+19
-10
@@ -1,9 +1,21 @@
|
||||
|
||||
OPTION( QT_USE_QTVIEWER "IfcOpenShell QT GUI Viewer, QT environment required" OFF )
|
||||
|
||||
|
||||
IF (QT_USE_QTVIEWER)
|
||||
|
||||
################################################################################
|
||||
# #
|
||||
# This file is part of IfcOpenShell. #
|
||||
# #
|
||||
# IfcOpenShell is free software: you can redistribute it and/or modify #
|
||||
# it under the terms of the Lesser GNU General Public License as published by #
|
||||
# the Free Software Foundation, either version 3.0 of the License, or #
|
||||
# (at your option) any later version. #
|
||||
# #
|
||||
# IfcOpenShell is distributed in the hope that it will be useful, #
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
|
||||
# Lesser GNU General Public License for more details. #
|
||||
# #
|
||||
# You should have received a copy of the Lesser GNU General Public License #
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>. #
|
||||
# #
|
||||
################################################################################
|
||||
|
||||
# Find QT header files
|
||||
SET(QT_MIN_VERSION "4.5.0")
|
||||
@@ -40,7 +52,4 @@ QT_WRAP_CPP(QTviewer QTviewer_SRCS ${QTviewer_MOC_SRCS})
|
||||
ADD_EXECUTABLE( QTviewer ${QTviewer_SRCS} ${QTviewer_MOC_SRCS})
|
||||
#http://www.qtcentre.org/wiki/index.php?title=Compiling_Qt4_apps_with_CMake
|
||||
|
||||
TARGET_LINK_libRARIES (QTviewer IfcParse IfcGeom ${QT_LIBRARIES} TKernel TKMath TKBRep TKGeomBase TKGeomAlgo TKG3d TKG2d TKShHealing TKTopAlgo TKMesh TKPrim TKBool TKBO TKFillet)
|
||||
|
||||
|
||||
ENDIF (QT_USE_QTVIEWER)
|
||||
TARGET_LINK_libRARIES (QTviewer IfcParse IfcGeom ${QT_LIBRARIES} ${OPENCASCADE_LIBRARIES})
|
||||
|
||||
@@ -0,0 +1,438 @@
|
||||
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
:: ::
|
||||
:: This file is part of IfcOpenShell. ::
|
||||
:: ::
|
||||
:: IfcOpenShell is free software: you can redistribute it and/or modify ::
|
||||
:: it under the terms of the Lesser GNU General Public License as published by ::
|
||||
:: the Free Software Foundation, either version 3.0 of the License, or ::
|
||||
:: (at your option) any later version. ::
|
||||
:: ::
|
||||
:: IfcOpenShell is distributed in the hope that it will be useful, ::
|
||||
:: but WITHOUT ANY WARRANTY; without even the implied warranty of ::
|
||||
:: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ::
|
||||
:: Lesser GNU General Public License for more details. ::
|
||||
:: ::
|
||||
:: You should have received a copy of the Lesser GNU General Public License ::
|
||||
:: along with this program. If not, see <http://www.gnu.org/licenses/>. ::
|
||||
:: ::
|
||||
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
|
||||
:: This batch file expects CMake generator as %1 and build configuration type as %2. If not provided,
|
||||
:: the GENERATOR_DEFAULT will be used for %1 and BUILD_CFG_DEFAULT for %2 (both set in vs-cfg.cmd)
|
||||
:: Optionally a build type (Build/Rebuild/Clean) can be passed as %3.
|
||||
|
||||
@echo off
|
||||
echo.
|
||||
|
||||
set PROJECT_NAME=IfcOpenShell
|
||||
call utils\cecho.cmd 15 0 "This script fetches and builds all %PROJECT_NAME% dependencies"
|
||||
echo.
|
||||
|
||||
:: Enable the delayed environment variable expansion needed in vs-cfg.cmd.
|
||||
setlocal EnableDelayedExpansion
|
||||
|
||||
:: Make sure vcvarsall.bat is called and dev env set is up.
|
||||
IF "%VSINSTALLDIR%"=="" (
|
||||
call utils\cecho.cmd 0 12 "Visual Studio environment variables not set - cannot proceed!"
|
||||
GOTO :ErrorAndPrintUsage
|
||||
)
|
||||
|
||||
:: Set up variables depending on the used Visual Studio version
|
||||
call vs-cfg.cmd %1 %2
|
||||
IF NOT %ERRORLEVEL%==0 GOTO :Error
|
||||
|
||||
set BUILD_TYPE=%3
|
||||
|
||||
IF %GENERATOR%=="" (
|
||||
call cecho.cmd 0 12 "GENERATOR not specified - cannot proceed!"
|
||||
GOTO :Error
|
||||
)
|
||||
|
||||
IF "%BUILD_TYPE%"=="" set BUILD_TYPE=Build
|
||||
|
||||
IF NOT "!BUILD_TYPE!"=="Build" IF NOT "!BUILD_TYPE!"=="Rebuild" IF NOT "!BUILD_TYPE!"=="Clean" (
|
||||
call utils\cecho.cmd 0 12 "Invalid build type passed: !BUILD_TYPE!. Cannot proceed, aborting!"
|
||||
GOTO :Error
|
||||
)
|
||||
|
||||
:: Make sure deps and install folders exists.
|
||||
IF NOT EXIST %DEPS_DIR%. mkdir %DEPS_DIR%
|
||||
IF NOT EXIST %INSTALL_DIR%. mkdir %INSTALL_DIR%
|
||||
|
||||
:: If we use VS2008, framework path (for MSBuild) may not be correctly set. Manually attempt to add in that case
|
||||
IF %VS_VER%==2008 set PATH=C:\Windows\Microsoft.NET\Framework\v3.5;%PATH%
|
||||
|
||||
:: User-configurable build options
|
||||
IF "%IFCOS_INSTALL_PYTHON%"=="" set IFCOS_INSTALL_PYTHON=TRUE
|
||||
IF "%IFCOS_USE_PYTHON2%"=="" set IFCOS_USE_PYTHON2=FALSE
|
||||
IF "%IFCOS_NUM_BUILD_PROCS%"=="" set IFCOS_NUM_BUILD_PROCS=%NUMBER_OF_PROCESSORS%
|
||||
|
||||
:: For subroutines
|
||||
set MSBUILD_CMD=MSBuild.exe /nologo /m:%IFCOS_NUM_BUILD_PROCS% /t:%BUILD_TYPE%
|
||||
REM /clp:ErrorsOnly;WarningsOnly
|
||||
:: Note BUILD_TYPE not passed, Clean e.g. wouldn't delete the installed files.
|
||||
set INSTALL_CMD=MSBuild.exe /nologo /m:%IFCOS_NUM_BUILD_PROCS%
|
||||
set BUILD_DIR=build-vs%VS_VER%-%TARGET_ARCH%
|
||||
|
||||
echo.
|
||||
|
||||
:: Check that required tools are in PATH
|
||||
FOR %%i IN (powershell git cmake) DO (
|
||||
where.exe %%i 1> NUL 2> NUL || call cecho.cmd 0 12 "Required tool `'%%i`' not installed or not added to PATH" && goto :ErrorAndPrintUsage
|
||||
)
|
||||
|
||||
:: Print build configuration information
|
||||
|
||||
call cecho.cmd 0 10 "Script configuration:"
|
||||
call cecho.cmd 0 13 "* CMake Generator`t= '`"%GENERATOR%`'`t
|
||||
echo - Passed to CMake -G option.
|
||||
call cecho.cmd 0 13 "* Target Architecture`t= %TARGET_ARCH%"
|
||||
echo - Whether were doing 32-bit (x86) or 64-bit (x64) build.
|
||||
call cecho.cmd 0 13 "* Dependency Directory`t= %DEPS_DIR%"
|
||||
echo - The directory where %PROJECT_NAME% dependencies are fetched and built.
|
||||
call cecho.cmd 0 13 "* Installation Directory = %INSTALL_DIR%"
|
||||
echo - The directory where %PROJECT_NAME% dependencies are installed.
|
||||
call cecho.cmd 0 13 "* Build Config Type`t= %BUILD_CFG%"
|
||||
echo - The used build configuration type for the dependencies.
|
||||
echo Defaults to RelWithDebInfo if not specified.
|
||||
IF %BUILD_CFG%==MinSizeRel call cecho.cmd 0 14 " WARNING: MinSizeRel build can suffer from a significant performance loss."
|
||||
call cecho.cmd 0 13 "* Build Type`t`t= %BUILD_TYPE%"
|
||||
echo - The used build type for the dependencies (Build, Rebuild, Clean).
|
||||
echo Defaults to Build if not specified. Rebuild/Clean also uninstalls Python (if it was installed by this script).
|
||||
call cecho.cmd 0 13 "* IFCOS_INSTALL_PYTHON`t= %IFCOS_INSTALL_PYTHON%"
|
||||
echo - Download and install Python.
|
||||
echo Set to something other than TRUE if you wish to use an already installed version of Python.
|
||||
call cecho.cmd 0 13 "* IFCOS_USE_PYTHON2`t= %IFCOS_USE_PYTHON2%"
|
||||
echo - Use Python 2 instead of 3.
|
||||
echo Set to TRUE if you wish to use Python 2 instead of 3. Has no effect if IFCOS_INSTALL_PYTHON is not TRUE.
|
||||
call cecho.cmd 0 13 "* IFCOS_NUM_BUILD_PROCS`t= %IFCOS_NUM_BUILD_PROCS%"
|
||||
echo - How many MSBuild.exe processes may be run in parallel.
|
||||
echo Defaults to NUMBER_OF_PROCESSORS.
|
||||
echo.
|
||||
|
||||
call :PrintUsage
|
||||
|
||||
call cecho.cmd 0 14 "Warning: You will need roughly 8 GB of disk space to proceed `(VS 2015 x64 RelWithDebInfo`)."
|
||||
echo.
|
||||
|
||||
call cecho.cmd black cyan "If you are not ready with the above, press Ctrl-C to abort!"
|
||||
pause
|
||||
echo.
|
||||
|
||||
cd %DEPS_DIR%
|
||||
|
||||
:: Note all of the depedencies have approriate label so that user can easily skip something if wanted
|
||||
:: by modifying this file and using goto.
|
||||
:Boost
|
||||
set BOOST_VERSION=1.59.0
|
||||
:: DEPENDENCY_NAME is used for logging and DEPENDENCY_DIR for saving from some redundant typing
|
||||
set DEPENDENCY_NAME=Boost %BOOST_VERSION%
|
||||
set DEPENDENCY_DIR="%DEPS_DIR%\boost"
|
||||
:: Version string with underscores instead of dots.
|
||||
set BOOST_VER=%BOOST_VERSION:.=_%
|
||||
set BOOST_ROOT=%DEPS_DIR%\boost
|
||||
REM set BOOST_INCLUDEDIR=%DEPS_DIR%\boost
|
||||
set BOOST_LIBRARYDIR=%DEPS_DIR%\boost\stage\%VS_PLATFORM%\lib
|
||||
:: NOTE Also zip download exists, if encountering problems with 7z for some reason.
|
||||
set ZIP_EXT=7z
|
||||
set BOOST_ZIP=boost_%BOOST_VER%.%ZIP_EXT%
|
||||
|
||||
call :DownloadFile http://downloads.sourceforge.net/project/boost/boost/%BOOST_VERSION%/%BOOST_ZIP% "%DEPS_DIR%" %BOOST_ZIP%
|
||||
|
||||
IF NOT %ERRORLEVEL%==0 GOTO :Error
|
||||
call :ExtractArchive %BOOST_ZIP% "%DEPS_DIR%" "%DEPS_DIR%\boost"
|
||||
IF NOT %ERRORLEVEL%==0 GOTO :Error
|
||||
|
||||
:: Build Boost build script
|
||||
IF EXIST "%DEPS_DIR%\boost_%BOOST_VER%". (
|
||||
cd "%DEPS_DIR%"
|
||||
ren boost_%BOOST_VER% boost
|
||||
IF NOT EXIST "%DEPS_DIR%\boost\boost.css" GOTO :Error
|
||||
cd "%DEPS_DIR%\boost"
|
||||
call cecho.cmd 0 13 "Building Boost build script."
|
||||
call bootstrap vc%VC_VER%
|
||||
IF NOT %ERRORLEVEL%==0 GOTO :Error
|
||||
)
|
||||
|
||||
set BOOST_LIBS=--with-system --with-regex --with-thread --with-program_options --with-date_time
|
||||
:: NOTE Boost is fast to build with limited set of libraries so build it always.
|
||||
cd "%DEPS_DIR%\boost"
|
||||
call cecho.cmd 0 13 "Building %DEPENDENCY_NAME% %BOOST_LIBS% Please be patient, this will take a while."
|
||||
IF EXIST "%DEPS_DIR%\boost\bin.v2\project-cache.jam" del "%DEPS_DIR%\boost\bin.v2\project-cache.jam"
|
||||
call .\b2 toolset=msvc-%VC_VER%.0 runtime-link=static address-model=%ARCH_BITS% -j%IFCOS_NUM_BUILD_PROCS% ^
|
||||
variant=%DEBUG_OR_RELEASE_LOWERCASE% %BOOST_LIBS% stage --stagedir=stage/vs%VS_VER%-%VS_PLATFORM%
|
||||
IF NOT %ERRORLEVEL%==0 GOTO :Error
|
||||
|
||||
:ICU
|
||||
set DEPENDENCY_NAME=ICU
|
||||
set DEPENDENCY_DIR=N/A
|
||||
set ICU_ZIP=icu-55.1-vs%VS_VER%.7z
|
||||
cd "%DEPS_DIR%"
|
||||
call :DownloadFile http://www.npcglib.org/~stathis/downloads/%ICU_ZIP% "%DEPS_DIR%" %ICU_ZIP%
|
||||
IF NOT %ERRORLEVEL%==0 GOTO :Error
|
||||
call :ExtractArchive %ICU_ZIP% "%DEPS_DIR%" "%INSTALL_DIR%\icu"
|
||||
IF NOT %ERRORLEVEL%==0 GOTO :Error
|
||||
:: Rename lib and bin directories to predictable form
|
||||
IF EXIST "%DEPS_DIR%\icu-55.1-vs%VS_VER%". (
|
||||
pushd "%DEPS_DIR%\icu-55.1-vs%VS_VER%"
|
||||
IF EXIST bin. ren bin bin%ARCH_BITS%"
|
||||
IF EXIST lib. ren lib lib%ARCH_BITS%"
|
||||
popd
|
||||
)
|
||||
|
||||
IF EXIST "%DEPS_DIR%\icu-55.1-vs%VS_VER%\". (
|
||||
robocopy "%DEPS_DIR%\icu-55.1-vs%VS_VER%\include" "%INSTALL_DIR%\icu\include" /E /IS /njh /njs
|
||||
IF NOT EXIST "%INSTALL_DIR%\icu\lib". mkdir "%INSTALL_DIR%\icu\lib"
|
||||
copy /y "%DEPS_DIR%\icu-55.1-vs%VS_VER%\lib%ARCH_BITS%\sicutest%POSTFIX_D%.lib" "%INSTALL_DIR%\icu\lib\icutest%POSTFIX_D%.lib"
|
||||
copy /y "%DEPS_DIR%\icu-55.1-vs%VS_VER%\lib%ARCH_BITS%\sicutu%POSTFIX_D%.lib" "%INSTALL_DIR%\icu\lib\icutu%POSTFIX_D%.lib"
|
||||
copy /y "%DEPS_DIR%\icu-55.1-vs%VS_VER%\lib%ARCH_BITS%\sicuuc%POSTFIX_D%.lib" "%INSTALL_DIR%\icu\lib\icuuc%POSTFIX_D%.lib"
|
||||
copy /y "%DEPS_DIR%\icu-55.1-vs%VS_VER%\lib%ARCH_BITS%\sicudt%POSTFIX_D%.lib" "%INSTALL_DIR%\icu\lib\icudt%POSTFIX_D%.lib"
|
||||
copy /y "%DEPS_DIR%\icu-55.1-vs%VS_VER%\lib%ARCH_BITS%\sicuin%POSTFIX_D%.lib" "%INSTALL_DIR%\icu\lib\icuin%POSTFIX_D%.lib"
|
||||
copy /y "%DEPS_DIR%\icu-55.1-vs%VS_VER%\lib%ARCH_BITS%\sicuio%POSTFIX_D%.lib" "%INSTALL_DIR%\icu\lib\icuio%POSTFIX_D%.lib"
|
||||
copy /y "%DEPS_DIR%\icu-55.1-vs%VS_VER%\lib%ARCH_BITS%\sicule%POSTFIX_D%.lib" "%INSTALL_DIR%\icu\lib\icule%POSTFIX_D%.lib"
|
||||
copy /y "%DEPS_DIR%\icu-55.1-vs%VS_VER%\lib%ARCH_BITS%\siculx%POSTFIX_D%.lib" "%INSTALL_DIR%\icu\lib\iculx%POSTFIX_D%.lib"
|
||||
)
|
||||
|
||||
:OpenCOLLADA
|
||||
:: Note OpenCOLLADA has only Release and Debug builds.
|
||||
set DEPENDENCY_NAME=OpenCOLLADA
|
||||
set DEPENDENCY_DIR=%DEPS_DIR%\OpenCOLLADA
|
||||
call :GitCloneOrPullRepository https://github.com/KhronosGroup/OpenCOLLADA.git "%DEPENDENCY_DIR%"
|
||||
IF NOT %ERRORLEVEL%==0 GOTO :Error
|
||||
cd "%DEPENDENCY_DIR%"
|
||||
:: NOTE OpenCOLLADA has been observed to have problems with switching between debug and release builds so
|
||||
:: uncomment to following line in order to delete the CMakeCache.txt always if experiencing problems.
|
||||
REM IF EXIST "%DEPENDENCY_DIR%\%BUILD_DIR%\CMakeCache.txt". del "%DEPENDENCY_DIR%\%BUILD_DIR%\CMakeCache.txt"
|
||||
:: NOTE Enforce that the embedded LibXml2 and PCRE are used as there might be problems with arbitrary versions of the libraries.
|
||||
call :RunCMake -DCMAKE_INSTALL_PREFIX="%INSTALL_DIR%\OpenCOLLADA" -DUSE_STATIC_MSVC_RUNTIME=1 -DCMAKE_DEBUG_POSTFIX=d ^
|
||||
-DLIBXML2_LIBRARIES="" -DLIBXML2_INCLUDE_DIR="" -DPCRE_INCLUDE_DIR="" -DPCRE_LIBRARIES=""
|
||||
IF NOT %ERRORLEVEL%==0 GOTO :Error
|
||||
REM TODO OpenCOLLADA takes a long time to build; build only if needed
|
||||
REM IF NOT EXIST "%DEPS_DIR%\OpenCOLLADA\%BUILD_DIR%\lib\%DEBUG_OR_RELEASE%\OpenCOLLADASaxFrameworkLoader.lib".
|
||||
call :BuildSolution "%DEPENDENCY_DIR%\%BUILD_DIR%\OPENCOLLADA.sln" %DEBUG_OR_RELEASE%
|
||||
IF NOT %ERRORLEVEL%==0 GOTO :Error
|
||||
call :InstallCMakeProject "%DEPENDENCY_DIR%\%BUILD_DIR%" %DEBUG_OR_RELEASE%
|
||||
IF NOT %ERRORLEVEL%==0 GOTO :Error
|
||||
|
||||
:oce-win-bundle
|
||||
set DEPENDENCY_NAME=oce-win-bundle
|
||||
set DEPENDENCY_DIR=%DEPS_DIR%\oce-win-bundle
|
||||
:: TODO Temporarily use our own repo until the upstream is fixed
|
||||
REM call :GitCloneOrPullRepository https://github.com/QbProg/oce-win-bundle.git "%DEPENDENCY_DIR%"
|
||||
call :GitCloneOrPullRepository https://github.com/Tridify/oce-win-bundle.git "%DEPENDENCY_DIR%"
|
||||
IF NOT %ERRORLEVEL%==0 GOTO :Error
|
||||
IF NOT EXIST "%DEPENDENCY_DIR%\%BUILD_DIR%". (
|
||||
cd "%DEPENDENCY_DIR%"
|
||||
call git branch msvc-enhancements origin/msvc-enhancements
|
||||
IF NOT %ERRORLEVEL%==0 GOTO :Error
|
||||
call git checkout msvc-enhancements
|
||||
IF NOT %ERRORLEVEL%==0 GOTO :Error
|
||||
)
|
||||
cd "%DEPENDENCY_DIR%"
|
||||
call :RunCMake -DOCE_WIN_BUNDLE_INSTALL_DIR="%INSTALL_DIR%\oce-win-bundle" -DBUNDLE_USE_STATIC_MSVC_RUNTIME=1
|
||||
IF NOT %ERRORLEVEL%==0 GOTO :Error
|
||||
REM IF NOT EXIST "%DEPENDENCY_DIR%\%BUILD_DIR%\FreeImage.cmake\%BUILD_CFG%\FreeImage.dll"
|
||||
call :BuildSolution "%DEPENDENCY_DIR%\%BUILD_DIR%\oce-win-bundle.sln" %BUILD_CFG%
|
||||
IF NOT %ERRORLEVEL%==0 GOTO :Error
|
||||
call :InstallCMakeProject "%DEPENDENCY_DIR%\%BUILD_DIR%" %BUILD_CFG%
|
||||
IF NOT %ERRORLEVEL%==0 GOTO :Error
|
||||
|
||||
:OCE
|
||||
set DEPENDENCY_NAME=Open CASCADE Community Edition
|
||||
set DEPENDENCY_DIR=%DEPS_DIR%\oce
|
||||
:: TODO Temporarily use our own repo until the upstream has static VC runtime option
|
||||
REM call :GitCloneOrPullRepository https://github.com/tpaviot/oce.git "%DEPENDENCY_DIR%"
|
||||
call :GitCloneOrPullRepository https://github.com/Tridify/oce.git "%DEPENDENCY_DIR%"
|
||||
IF NOT %ERRORLEVEL%==0 GOTO :Error
|
||||
IF NOT EXIST "%DEPENDENCY_DIR%\%BUILD_DIR%". (
|
||||
cd "%DEPENDENCY_DIR%"
|
||||
call git branch temp-vs-static-lib-build-fixes origin/temp-vs-static-lib-build-fixes
|
||||
IF NOT %ERRORLEVEL%==0 GOTO :Error
|
||||
call git checkout temp-vs-static-lib-build-fixes
|
||||
IF NOT %ERRORLEVEL%==0 GOTO :Error
|
||||
)
|
||||
cd "%DEPENDENCY_DIR%"
|
||||
set OCE_BUNDLE_ROOT_PATH="%INSTALL_DIR%\oce-win-bundle"
|
||||
REM -DOCE_USE_BUNDLE_SOURCE=1 REM set OCE_BUNDLE_ROOT_PATH=%DEPS_DIR%\oce-win-bundle
|
||||
:: NOTE Specify OCE_NO_LIBRARY_VERSION as rc.exe can fail due to long filenames and huge command-line parameter
|
||||
:: input (more than 32,000 characters). Could maybe try using subst for the build dir to overcome this.
|
||||
call :RunCMake -DOCE_BUILD_SHARED_LIB=0 -DOCE_USE_BUNDLE=1 -DOCE_BUNDLE_ROOT_PATH="%OCE_BUNDLE_ROOT_PATH%" ^
|
||||
-DOCE_INSTALL_PREFIX="%INSTALL_DIR%\oce" -DOCE_TESTING=0 -DOCE_NO_LIBRARY_VERSION=1 ^
|
||||
-DOCE_USE_STATIC_MSVC_RUNTIME=1
|
||||
IF NOT %ERRORLEVEL%==0 GOTO :Error
|
||||
REM TODO OCE takes a long time to build; build only if needed
|
||||
call :BuildSolution "%DEPENDENCY_DIR%\%BUILD_DIR%\OCE.sln" %BUILD_CFG%
|
||||
IF NOT %ERRORLEVEL%==0 GOTO :Error
|
||||
call :InstallCMakeProject "%DEPENDENCY_DIR%\%BUILD_DIR%" %BUILD_CFG%
|
||||
IF NOT %ERRORLEVEL%==0 GOTO :Error
|
||||
|
||||
:Python
|
||||
:: TODO Update to 3.5 when it's released as it will have an option to install debug libraries.
|
||||
:: NOTE If updating the default Python version, change PY_VER_MAJOR_MINOR accordingly in run-cmake.bat
|
||||
set PYTHON_VERSION=3.4.3
|
||||
IF "%IFCOS_USE_PYTHON2%"=="TRUE" set PYTHON_VERSION=2.7.10
|
||||
set PY_VER_MAJOR_MINOR=%PYTHON_VERSION:~0,3%
|
||||
set PY_VER_MAJOR_MINOR=%PY_VER_MAJOR_MINOR:.=%
|
||||
set PYTHONPATH=%INSTALL_DIR%\Python%PY_VER_MAJOR_MINOR%
|
||||
|
||||
set DEPENDENCY_NAME=Python %PYTHON_VERSION%
|
||||
set DEPENDENCY_DIR=N/A
|
||||
set PYTHON_AMD64_POSTFIX=.amd64
|
||||
:: NOTE/TODO Beginning from 3.5.0: set PYTHON_AMD64_POSTFIX=-amd64
|
||||
IF NOT %TARGET_ARCH%==x64 set PYTHON_AMD64_POSTFIX=
|
||||
set PYTHON_INSTALLER=python-%PYTHON_VERSION%%PYTHON_AMD64_POSTFIX%.msi
|
||||
:: NOTE/TODO 3.5.0 doesn't use MSI any longer, but exe: set PYTHON_INSTALLER=python-%PYTHON_VERSION%%PYTHON_AMD64_POSTFIX%.exe
|
||||
IF "%IFCOS_INSTALL_PYTHON%"=="TRUE" (
|
||||
REM Store Python versions to BuildDepsCache.txt for run-cmake.bat
|
||||
echo PY_VER_MAJOR_MINOR=%PY_VER_MAJOR_MINOR%>"%~dp0\BuildDepsCache-%TARGET_ARCH%.txt"
|
||||
echo PYTHONPATH=%PYTHONPATH%>>"%~dp0\BuildDepsCache-%TARGET_ARCH%.txt"
|
||||
|
||||
cd "%DEPS_DIR%"
|
||||
call :DownloadFile https://www.python.org/ftp/python/%PYTHON_VERSION%/%PYTHON_INSTALLER% "%DEPS_DIR%" %PYTHON_INSTALLER%
|
||||
IF NOT %ERRORLEVEL%==0 GOTO :Error
|
||||
REM Uninstall if build Rebuild/Clean used
|
||||
IF NOT %BUILD_TYPE%==Build (
|
||||
call cecho.cmd 0 13 "Uninstalling %DEPENDENCY_NAME%. Please be patient, this will take a while."
|
||||
msiexec /x %PYTHON_INSTALLER% /qn
|
||||
)
|
||||
|
||||
IF NOT EXIST "%PYTHONPATH%". (
|
||||
call cecho.cmd 0 13 "Installing %DEPENDENCY_NAME%. Please be patient, this will take a while."
|
||||
msiexec /qn /i %PYTHON_INSTALLER% TARGETDIR="%PYTHONPATH%"
|
||||
) ELSE (
|
||||
call cecho.cmd 0 13 "%DEPENDENCY_NAME% already installed. Skipping."
|
||||
)
|
||||
) ELSE (
|
||||
call cecho.cmd 0 13 "IFCOS_INSTALL_PYTHON not true, skipping installation of Python."
|
||||
)
|
||||
|
||||
:SWIG
|
||||
set SWIG_VERSION=3.0.7
|
||||
set DEPENDENCY_NAME=SWIG %SWIG_VERSION%
|
||||
set DEPENDENCY_DIR=N/A
|
||||
set SWIG_ZIP=swigwin-%SWIG_VERSION%.zip
|
||||
cd "%DEPS_DIR%"
|
||||
call :DownloadFile http://sourceforge.net/projects/swig/files/swigwin/swigwin-%SWIG_VERSION%/%SWIG_ZIP% "%DEPS_DIR%" %SWIG_ZIP%
|
||||
IF NOT %ERRORLEVEL%==0 GOTO :Error
|
||||
call :ExtractArchive %SWIG_ZIP% "%DEPS_DIR%" "%DEPS_DIR%\swigwin"
|
||||
IF NOT %ERRORLEVEL%==0 GOTO :Error
|
||||
IF EXIST "%DEPS_DIR%\swigwin-%SWIG_VERSION%". (
|
||||
pushd %DEPS%
|
||||
ren swigwin-%SWIG_VERSION% swigwin
|
||||
popd
|
||||
)
|
||||
IF EXIST "%DEPS_DIR%\swigwin\". robocopy "%DEPS_DIR%\swigwin" "%INSTALL_DIR%\swigwin" /E /IS /MOVE /njh /njs
|
||||
|
||||
:Successful
|
||||
echo.
|
||||
call %~dp0\utils\cecho.cmd 0 10 "%PROJECT_NAME% dependencies built."
|
||||
goto :Finish
|
||||
|
||||
:ErrorAndPrintUsage
|
||||
echo.
|
||||
call :PrintUsage
|
||||
:Error
|
||||
echo.
|
||||
call %~dp0\utils\cecho.cmd 0 12 "An error occurred! Aborting!"
|
||||
goto :Finish
|
||||
|
||||
:Finish
|
||||
set PATH=%ORIGINAL_PATH%
|
||||
cd %~dp0
|
||||
endlocal
|
||||
goto :EOF
|
||||
|
||||
::::::::::::::::::::::::::::::::::::: Subroutines :::::::::::::::::::::::::::::::::::::
|
||||
|
||||
:: DownloadFile - Downloads a file using wget
|
||||
:: Params: %1 url, %2 destinationDir, %3 filename
|
||||
:DownloadFile
|
||||
pushd %2
|
||||
IF NOT EXIST "%3". (
|
||||
call cecho.cmd 0 13 "Downloading %DEPENDENCY_NAME% into %2."
|
||||
powershell -Command "$webClient = new-object System.Net.WebClient; $webClient.DownloadFile('%1', '%3')"
|
||||
REM Old wget version in case someone has problem with PowerShell: wget --no-check-certificate %1
|
||||
) ELSE (
|
||||
call cecho.cmd 0 13 "%DEPENDENCY_NAME% already downloaded. Skipping."
|
||||
)
|
||||
set RET=%ERRORLEVEL%
|
||||
popd
|
||||
exit /b %RET%
|
||||
|
||||
:: ExtractArchive - Extracts an archive file using 7-zip
|
||||
:: Params: %1 filename, %2 destinationDir, %3 dirAfterExtraction
|
||||
:ExtractArchive
|
||||
IF NOT EXIST "%3". (
|
||||
call cecho.cmd 0 13 "Extracting %DEPENDENCY_NAME% into %2."
|
||||
7za x %1 -y -o%2
|
||||
) ELSE (
|
||||
call cecho.cmd 0 13 "%DEPENDENCY_NAME% already extracted into %3. Skipping."
|
||||
)
|
||||
exit /b %ERRORLEVEL%
|
||||
|
||||
:: GitCloneOrPullRepository - Clones or pulls (if repository already cloned) a Git repository
|
||||
:: Params: %1 gitUrl, %2 destDir
|
||||
:: F.ex. call :GitCloneRepository https://github.com/KhronosGroup/OpenCOLLADA.git "%DEPS_DIR%\OpenCOLLADA\"
|
||||
:GitCloneOrPullRepository
|
||||
IF NOT EXIST %2. (
|
||||
call cecho.cmd 0 13 "Cloning %DEPENDENCY_NAME% into %2."
|
||||
pushd "%DEPS_DIR%"
|
||||
call git clone %1 %2
|
||||
) ELSE (
|
||||
call cecho.cmd 0 13 "%DEPENDENCY_NAME% already cloned. Pulling latest changes."
|
||||
pushd %2
|
||||
call git pull
|
||||
)
|
||||
set RET=%ERRORLEVEL%
|
||||
popd
|
||||
exit /b %RET%
|
||||
|
||||
:: RunCMake - Runs CMake for a CMake-based project
|
||||
:: Params: %* cmakeOptions
|
||||
:: NOTE cd to root CMakeLists.txt folder before calling this if the CMakeLists.txt is not in the repo root.
|
||||
:RunCMake
|
||||
call cecho.cmd 0 13 "Running CMake for %DEPENDENCY_NAME%."
|
||||
IF NOT EXIST %BUILD_DIR%. mkdir %BUILD_DIR%
|
||||
IF NOT %ERRORLEVEL%==0 GOTO :Error
|
||||
pushd %BUILD_DIR%
|
||||
:: TODO make deleting cache a parameter for this subroutine? We probably want to delete the
|
||||
:: cache always e.g. when we've had new changes in the repository.
|
||||
IF %BUILD_TYPE%==Rebuild IF EXIST CMakeCache.txt. del CMakeCache.txt
|
||||
cmake .. -G %GENERATOR% %*
|
||||
set RET=%ERRORLEVEL%
|
||||
popd
|
||||
exit /b %RET%
|
||||
|
||||
:: BuildSolution - Builds/Rebuilds/Cleans a solution using MSBuild
|
||||
:: Params: %1 solutioName, %2 configuration
|
||||
:BuildSolution
|
||||
call cecho.cmd 0 13 "%BUILD_TYPE%ing %2 %DEPENDENCY_NAME%. Please be patient, this will take a while."
|
||||
%MSBUILD_CMD% %1 /p:configuration=%2;platform=%VS_PLATFORM%
|
||||
exit /b %ERRORLEVEL%
|
||||
|
||||
:: InstallCMakeProject - Builds the INSTALL project of CMake-based project
|
||||
:: Params: %1 buildDir, %2 == configuration
|
||||
:: NOTE the actual install dir is set during cmake run.
|
||||
:InstallCMakeProject
|
||||
pushd %1
|
||||
call cecho.cmd 0 13 "Installing %2 %DEPENDENCY_NAME%. Please be patient, this will take a while."
|
||||
%INSTALL_CMD% INSTALL.%VCPROJ_FILE_EXT% /p:configuration=%2;platform=%VS_PLATFORM%
|
||||
set RET=%ERRORLEVEL%
|
||||
popd
|
||||
exit /b %RET%
|
||||
|
||||
:: PrintUsage - Prints usage information
|
||||
:PrintUsage
|
||||
call %~dp0\utils\cecho.cmd 0 10 "Requirements for a successful execution:"
|
||||
echo 1. Install PowerShell (preinstalled in Windows ^>= 7) and make sure 'powershell' is accessible from PATH.
|
||||
echo - https://support.microsoft.com/en-us/kb/968929
|
||||
echo 2. Install Git and make sure 'git' is accessible from PATH.
|
||||
echo - http://code.google.com/p/tortoisegit/
|
||||
echo 3. Install CMake and make sure 'cmake' is accessible from PATH.
|
||||
echo - http://www.cmake.org/
|
||||
echo 4. Visual Studio 2008 or newer (2013 or newer recommended).
|
||||
echo - https://www.visualstudio.com/
|
||||
echo 5. Run this batch script with Visual Studio environment variables set.
|
||||
echo - https://msdn.microsoft.com/en-us/library/ms229859(v=vs.110).aspx
|
||||
echo.
|
||||
REM TODO 3ds Max SDK instructions?
|
||||
@@ -0,0 +1,58 @@
|
||||
Windows Build Tools and Scripts
|
||||
===============================
|
||||
This folder contains build tools and script for automatic building and deployment of IfcOpenShell (IFCOS)
|
||||
and its dependencies.
|
||||
|
||||
As a general guideline, `.cmd` files are non-standalone batch files that need to be run from command
|
||||
prompt or from another batch file, and/or while the Visual Studio environment variables set, and `.bat` files are
|
||||
standalone batch files that can be run also e.g. from the File Explorer.
|
||||
|
||||
Usage Instructions
|
||||
------------------
|
||||
Execute `build-deps.cmd` to fetch, build and install the dependencies. The batch file will print
|
||||
the requirements for a successful execution. The script allows a few user-configurable build options
|
||||
which are listed in the usage instructions. Either edit the script file or set these values before
|
||||
running the script.
|
||||
|
||||
`build-deps.cmd` expects a CMake generator as `%1` and a build configuration type as `%2`. If the parameters
|
||||
are not provided, the default values are used (`"Visual Studio 14 2015 Win64"` and `RelWithDebInfo` respectively).
|
||||
A build type (`Build/Rebuild/Clean`) can be provided as `%3`, if wanted (defaults to `Build`). See `vs-cfg.cmd`
|
||||
if you want to change the defaults. The batch file will create `deps\` and `deps-vs<VERSION>-<ARCHITECTURE>-installed\`
|
||||
directories to the project root. Debug and release builds of the depedencies can co-exist by simply running
|
||||
`build-deps.cmd <GENERATOR> Debug` and `build-deps.cmd <GENERATOR> <Release|RelWithDebInfo|MinSizeRel>`.
|
||||
|
||||
After the dependencies are build, execute `run-cmake.bat`. The batch file expects a CMake generator as
|
||||
`%1` (if not provided, the same default value as above is used), or alternatively, if more parameters are provided, `%*` is passed for the CMake invokation, i.e., if one
|
||||
wants to pass custom build options, the generator must be passed also using CMake's syntax:
|
||||
|
||||
`run-cmake.bat -G "Visual Studio 14 2015 Win64" -DBUILD_IFCPYTHON=0`.
|
||||
|
||||
The batch script will create a folder of form `build-vs<VERSION>-<ARCHITECTURE>\` which will contain the solution and project files for Visual Studio.
|
||||
**If you wish to use any library from a custom location, modify the paths in run-cmake.bat
|
||||
accordingly**.
|
||||
|
||||
After this, one can build the project using the `IfcOpenShell.sln` file in the build folder. Build the `INSTALL` project
|
||||
if wanted. The project will be installed to `installed-vs<VERSION>-<ARCHITECTURE>\` folder in the project's root
|
||||
folder and the required IfcOpenShell-Python parts are deployed to the `<PYTHONPATH>\Lib\site-packages\` folder.
|
||||
|
||||
**Note:** All of the dependencies are build as static libraries against the static run-time allowing the developer
|
||||
to effortlessly deploy standalone IFCOS binaries.
|
||||
|
||||
|
||||
Directory Structure
|
||||
------------------
|
||||
```
|
||||
..
|
||||
+---build-vs<VER>-<ARCH> - Created by run-cmake.bat, for a certain VS version and target architecture
|
||||
+---deps - Created by build-deps.cmd, common for all VS versions and target architectures
|
||||
+---deps-installed-vs<VER>-<ARCH> - Created by build-deps.cmd, for a certain VS version and target architecture
|
||||
+---installed-vs<VER>-<ARCH> - Created by building the IFCOS's INSTALL project
|
||||
\---win
|
||||
| build-deps.cmd - Fetches and builds all needed dependencies for IFCOS
|
||||
| BuildDepsCache-<ARCH>.txt - Cache file created by build-deps.cmd
|
||||
| readme.md - This file
|
||||
| run-cmake.bat - Sets environment variables for the dependencies and runs CMake for IFCOS
|
||||
| vs-cfg.cmd - Utility file used by the build scripts
|
||||
+---sln - Contains the old Visual Studio solution and project files
|
||||
\---utils - Contains various utilities for the build scripts
|
||||
```
|
||||
@@ -0,0 +1,112 @@
|
||||
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
:: ::
|
||||
:: This file is part of IfcOpenShell. ::
|
||||
:: ::
|
||||
:: IfcOpenShell is free software: you can redistribute it and/or modify ::
|
||||
:: it under the terms of the Lesser GNU General Public License as published by ::
|
||||
:: the Free Software Foundation, either version 3.0 of the License, or ::
|
||||
:: (at your option) any later version. ::
|
||||
:: ::
|
||||
:: IfcOpenShell is distributed in the hope that it will be useful, ::
|
||||
:: but WITHOUT ANY WARRANTY; without even the implied warranty of ::
|
||||
:: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ::
|
||||
:: Lesser GNU General Public License for more details. ::
|
||||
:: ::
|
||||
:: You should have received a copy of the Lesser GNU General Public License ::
|
||||
:: along with this program. If not, see <http://www.gnu.org/licenses/>. ::
|
||||
:: ::
|
||||
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
|
||||
@echo off
|
||||
echo.
|
||||
|
||||
set PROJECT_NAME=IfcOpenShell
|
||||
|
||||
:: Enable the delayed environment variable expansion needed in vs-cfg.cmd.
|
||||
setlocal EnableDelayedExpansion
|
||||
:: TODO Getting warning print in vs-cfg.cmd for missing build type although this script doesn't need it specified
|
||||
call vs-cfg.cmd %1
|
||||
|
||||
:: Read Python related variables from BuildDepsCache.txt
|
||||
for /f "delims== tokens=1,2" %%G in (BuildDepsCache-%TARGET_ARCH%.txt) do set %%G=%%H
|
||||
|
||||
pushd ..
|
||||
set CMAKE_INSTALL_PREFIX=%CD%\installed-vs%VS_VER%-%TARGET_ARCH%
|
||||
popd
|
||||
|
||||
set BUILD_DIR=build-vs%VS_VER%-%TARGET_ARCH%
|
||||
IF NOT EXIST ..\%BUILD_DIR%. mkdir ..\%BUILD_DIR%
|
||||
pushd ..\%BUILD_DIR%
|
||||
|
||||
set BOOST_ROOT=%DEPS_DIR%\boost
|
||||
REM set BOOST_INCLUDEDIR=%DEPS_DIR%\boost
|
||||
set BOOST_LIBRARYDIR=%DEPS_DIR%\boost\stage\vs%VS_VER%-%VS_PLATFORM%\lib
|
||||
set ICU_INCLUDE_DIR=%INSTALL_DIR%\icu\include
|
||||
set ICU_LIBRARY_DIR=%INSTALL_DIR%\icu\lib
|
||||
set OCC_INCLUDE_DIR=%INSTALL_DIR%\oce\include\oce
|
||||
set OCC_LIBRARY_DIR=%INSTALL_DIR%\oce\Win%ARCH_BITS%\lib
|
||||
set OPENCOLLADA_INCLUDE_DIR=%INSTALL_DIR%\OpenCOLLADA\include\opencollada
|
||||
set OPENCOLLADA_LIBRARY_DIR=%INSTALL_DIR%\OpenCOLLADA\lib\opencollada
|
||||
if "%PY_VER_MAJOR_MINOR%"=="" set PY_VER_MAJOR_MINOR=34
|
||||
if "%PYTHONPATH%"=="" set PYTHONPATH=%INSTALL_DIR%\Python%PY_VER_MAJOR_MINOR%
|
||||
set PYTHON_INCLUDE_DIR=%PYTHONPATH%\include
|
||||
set PYTHON_LIBRARY=%PYTHONPATH%\libs\python%PY_VER_MAJOR_MINOR%.lib
|
||||
set SWIG_DIR=%INSTALL_DIR%\swigwin
|
||||
set PATH=%PATH%;%SWIG_DIR%;%PYTHONPATH%
|
||||
:: TODO 3ds Max SDK?
|
||||
|
||||
echo.
|
||||
call cecho.cmd 0 10 "Script configuration:"
|
||||
echo CMake Generator = %GENERATOR%
|
||||
echo All arguments = %*
|
||||
echo.
|
||||
call cecho.cmd 0 10 "Dependency Environment Variables for %PROJECT_NAME%:"
|
||||
echo BOOST_ROOT = %BOOST_ROOT%
|
||||
REM echo BOOST_INCLUDEDIR = %BOOST_INCLUDEDIR%
|
||||
echo BOOST_LIBRARYDIR = %BOOST_LIBRARYDIR%
|
||||
echo ICU_INCLUDE_DIR = %ICU_INCLUDE_DIR%
|
||||
echo ICU_LIBRARY_DIR = %ICU_LIBRARY_DIR%
|
||||
echo OCC_INCLUDE_DIR = %OCC_INCLUDE_DIR%
|
||||
echo OCC_LIBRARY_DIR = %OCC_LIBRARY_DIR%
|
||||
echo OPENCOLLADA_INCLUDE_DIR = %OPENCOLLADA_INCLUDE_DIR%
|
||||
echo OPENCOLLADA_LIBRARY_DIR = %OPENCOLLADA_LIBRARY_DIR%
|
||||
echo PYTHONPATH = %PYTHONPATH%
|
||||
echo PYTHON_INCLUDE_DIR = %PYTHON_INCLUDE_DIR%
|
||||
echo PYTHON_LIBRARY = %PYTHON_LIBRARY%
|
||||
echo SWIG_DIR = %SWIG_DIR%
|
||||
echo.
|
||||
echo CMAKE_INSTALL_PREFIX = %CMAKE_INSTALL_PREFIX%
|
||||
echo.
|
||||
|
||||
set CMAKELISTS_DIR=..\cmake
|
||||
REM IF NOT EXIST %PROJECT_NAME%.sln. (
|
||||
IF EXIST CMakeCache.txt. del /Q CMakeCache.txt
|
||||
call cecho.cmd 0 13 "Running CMake for %PROJECT_NAME%."
|
||||
IF "%2"=="" (
|
||||
REM No extra arguments provided, trust that GENERATOR is set properly.
|
||||
cmake.exe %CMAKELISTS_DIR% -G %GENERATOR% -DCMAKE_INSTALL_PREFIX="%CMAKE_INSTALL_PREFIX%"
|
||||
) ELSE (
|
||||
REM Extra arguments has been provided. As CMake options are typically of format -DSOMETHING:BOOL=ON,
|
||||
REM i.e. they contain an equal sign, they will mess up the batch file argument parsing if the arguments are passed on
|
||||
REM by splitting them %2 %3 %4 %5 %6 %7 %8 %9. In the extra argument case trust that user has provided the generator
|
||||
REM as the first argument as pass all arguments as is by using %*.
|
||||
cmake.exe %CMAKELISTS_DIR% -G %*
|
||||
)
|
||||
IF NOT %ERRORLEVEL%==0 GOTO :Error
|
||||
REM ) ELSE (
|
||||
REM call cecho.cmd 0 10 "%PROJECT_NAME%.sln exists. Skipping CMake call for %PROJECT_NAME%."
|
||||
REM call cecho.cmd 0 10 "Delete %BUILD_DIR%\%PROJECT_NAME%.sln to trigger a CMake rerun."
|
||||
REM )
|
||||
echo.
|
||||
|
||||
goto :Finish
|
||||
|
||||
:Error
|
||||
echo.
|
||||
cecho {0C}An error occurred! Aborting!"
|
||||
goto :Finish
|
||||
|
||||
:Finish
|
||||
popd
|
||||
set PATH=%ORIGINAL_PATH%
|
||||
endlocal
|
||||
@@ -17,8 +17,8 @@
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="..\build\debug"
|
||||
IntermediateDirectory="..\temp\obj\debug"
|
||||
OutputDirectory="..\..\build\debug"
|
||||
IntermediateDirectory="..\..\temp\obj\debug"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2"
|
||||
>
|
||||
@@ -88,8 +88,8 @@
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="..\build\release"
|
||||
IntermediateDirectory="..\temp\obj\release"
|
||||
OutputDirectory="..\..\build\release"
|
||||
IntermediateDirectory="..\..\temp\obj\release"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2"
|
||||
WholeProgramOptimization="1"
|
||||
@@ -168,31 +168,31 @@
|
||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
|
||||
>
|
||||
<File
|
||||
RelativePath="..\src\ifcconvert\ColladaSerializer.cpp"
|
||||
RelativePath="..\..\src\ifcconvert\ColladaSerializer.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcconvert\IfcConvert.cpp"
|
||||
RelativePath="..\..\src\ifcconvert\IfcConvert.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcconvert\OpenCascadeBasedSerializer.cpp"
|
||||
RelativePath="..\..\src\ifcconvert\OpenCascadeBasedSerializer.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcconvert\SvgSerializer.cpp"
|
||||
RelativePath="..\..\src\ifcconvert\SvgSerializer.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcconvert\util.cpp"
|
||||
RelativePath="..\..\src\ifcconvert\util.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcconvert\WavefrontObjSerializer.cpp"
|
||||
RelativePath="..\..\src\ifcconvert\WavefrontObjSerializer.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcconvert\XmlSerializer.cpp"
|
||||
RelativePath="..\..\src\ifcconvert\XmlSerializer.cpp"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
@@ -202,43 +202,43 @@
|
||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
|
||||
>
|
||||
<File
|
||||
RelativePath="..\src\ifcconvert\ColladaSerializer.h"
|
||||
RelativePath="..\..\src\ifcconvert\ColladaSerializer.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcconvert\GeometrySerializer.h"
|
||||
RelativePath="..\..\src\ifcconvert\GeometrySerializer.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcconvert\IgesSerializer.h"
|
||||
RelativePath="..\..\src\ifcconvert\IgesSerializer.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcconvert\OpenCascadeBasedSerializer.h"
|
||||
RelativePath="..\..\src\ifcconvert\OpenCascadeBasedSerializer.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcconvert\StepSerializer.h"
|
||||
RelativePath="..\..\src\ifcconvert\StepSerializer.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcconvert\Serializer.h"
|
||||
RelativePath="..\..\src\ifcconvert\Serializer.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcconvert\SvgSerializer.h"
|
||||
RelativePath="..\..\src\ifcconvert\SvgSerializer.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcconvert\util.h"
|
||||
RelativePath="..\..\src\ifcconvert\util.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcconvert\WavefrontObjSerializer.h"
|
||||
RelativePath="..\..\src\ifcconvert\WavefrontObjSerializer.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcconvert\XmlSerializer.h"
|
||||
RelativePath="..\..\src\ifcconvert\XmlSerializer.h"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
@@ -151,43 +151,43 @@
|
||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
|
||||
>
|
||||
<File
|
||||
RelativePath="..\src\ifcgeom\IfcGeomCurves.cpp"
|
||||
RelativePath="..\..\src\ifcgeom\IfcGeomCurves.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcgeom\IfcGeomFaces.cpp"
|
||||
RelativePath="..\..\src\ifcgeom\IfcGeomFaces.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcgeom\IfcGeomFunctions.cpp"
|
||||
RelativePath="..\..\src\ifcgeom\IfcGeomFunctions.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcgeom\IfcGeomHelpers.cpp"
|
||||
RelativePath="..\..\src\ifcgeom\IfcGeomHelpers.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcgeom\IfcGeomMaterial.cpp"
|
||||
RelativePath="..\..\src\ifcgeom\IfcGeomMaterial.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcgeom\IfcGeomRenderStyles.cpp"
|
||||
RelativePath="..\..\src\ifcgeom\IfcGeomRenderStyles.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcgeom\IfcGeomRepresentation.cpp"
|
||||
RelativePath="..\..\src\ifcgeom\IfcGeomRepresentation.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcgeom\IfcGeomShapes.cpp"
|
||||
RelativePath="..\..\src\ifcgeom\IfcGeomShapes.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcgeom\IfcGeomWires.cpp"
|
||||
RelativePath="..\..\src\ifcgeom\IfcGeomWires.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcgeom\IfcRegister.cpp"
|
||||
RelativePath="..\..\src\ifcgeom\IfcRegister.cpp"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
@@ -197,87 +197,87 @@
|
||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
|
||||
>
|
||||
<File
|
||||
RelativePath="..\src\ifcgeom\IfcGeom.h"
|
||||
RelativePath="..\..\src\ifcgeom\IfcGeom.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcgeom\IfcGeomElement.h"
|
||||
RelativePath="..\..\src\ifcgeom\IfcGeomElement.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcgeom\IfcGeomIterator.h"
|
||||
RelativePath="..\..\src\ifcgeom\IfcGeomIterator.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcgeom\IfcGeomIteratorSettings.h"
|
||||
RelativePath="..\..\src\ifcgeom\IfcGeomIteratorSettings.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcgeom\IfcGeomMaterial.h"
|
||||
RelativePath="..\..\src\ifcgeom\IfcGeomMaterial.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcgeom\IfcGeomRenderStyles.h"
|
||||
RelativePath="..\..\src\ifcgeom\IfcGeomRenderStyles.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcgeom\IfcGeomRepresentation.h"
|
||||
RelativePath="..\..\src\ifcgeom\IfcGeomRepresentation.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcgeom\IfcGeomShapeType.h"
|
||||
RelativePath="..\..\src\ifcgeom\IfcGeomShapeType.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcgeom\IfcRegister.h"
|
||||
RelativePath="..\..\src\ifcgeom\IfcRegister.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcgeom\IfcRegisterConvertCurve.h"
|
||||
RelativePath="..\..\src\ifcgeom\IfcRegisterConvertCurve.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcgeom\IfcRegisterConvertFace.h"
|
||||
RelativePath="..\..\src\ifcgeom\IfcRegisterConvertFace.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcgeom\IfcRegisterConvertShape.h"
|
||||
RelativePath="..\..\src\ifcgeom\IfcRegisterConvertShape.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcgeom\IfcRegisterConvertShapes.h"
|
||||
RelativePath="..\..\src\ifcgeom\IfcRegisterConvertShapes.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcgeom\IfcRegisterConvertWire.h"
|
||||
RelativePath="..\..\src\ifcgeom\IfcRegisterConvertWire.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcgeom\IfcRegisterCreateCache.h"
|
||||
RelativePath="..\..\src\ifcgeom\IfcRegisterCreateCache.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcgeom\IfcRegisterDef.h"
|
||||
RelativePath="..\..\src\ifcgeom\IfcRegisterDef.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcgeom\IfcRegisterGeomHeader.h"
|
||||
RelativePath="..\..\src\ifcgeom\IfcRegisterGeomHeader.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcgeom\IfcRegisterPurgeCache.h"
|
||||
RelativePath="..\..\src\ifcgeom\IfcRegisterPurgeCache.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcgeom\IfcRegisterShapeType.h"
|
||||
RelativePath="..\..\src\ifcgeom\IfcRegisterShapeType.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcgeom\IfcRegisterUndef.h"
|
||||
RelativePath="..\..\src\ifcgeom\IfcRegisterUndef.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcgeom\IfcRepresentationShapeItem.h"
|
||||
RelativePath="..\..\src\ifcgeom\IfcRepresentationShapeItem.h"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
@@ -17,8 +17,8 @@
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="..\build\debug"
|
||||
IntermediateDirectory="..\temp\max\debug"
|
||||
OutputDirectory="..\..\build\debug"
|
||||
IntermediateDirectory="..\..\temp\max\debug"
|
||||
ConfigurationType="2"
|
||||
CharacterSet="2"
|
||||
BuildLogFile="$(IntDir)\BuildLog.htm"
|
||||
@@ -63,7 +63,7 @@
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="odbc32.lib odbccp32.lib comctl32.lib zlibdll.lib bmm.lib core.lib CustDlg.lib edmodel.lib expr.lib flt.lib geom.lib gfx.lib gup.lib helpsys.lib imageViewers.lib ManipSys.lib maxnet.lib Maxscrpt.lib maxutil.lib MenuMan.lib menus.lib mesh.lib MNMath.lib Paramblk2.lib particle.lib Poly.lib RenderUtil.lib SpringSys.lib tessint.lib viewfile.lib acap.lib TKerneld.lib TKMathd.lib TKBRepd.lib TKGeomBased.lib TKGeomAlgod.lib TKG3dd.lib TKG2dd.lib TKShHealingd.lib TKTopAlgod.lib TKMeshd.lib TKPrimd.lib TKBoold.lib TKBOd.lib TKFilletd.lib"
|
||||
OutputFile="$(OutDir)\$(ProjectName).dli"
|
||||
ModuleDefinitionFile="..\src\ifcmax\ifcmax.def"
|
||||
ModuleDefinitionFile="..\..\src\ifcmax\ifcmax.def"
|
||||
GenerateDebugInformation="true"
|
||||
TargetMachine="1"
|
||||
/>
|
||||
@@ -91,8 +91,8 @@
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="..\build\release"
|
||||
IntermediateDirectory="..\temp\max\release"
|
||||
OutputDirectory="..\..\build\release"
|
||||
IntermediateDirectory="..\..\temp\max\release"
|
||||
ConfigurationType="2"
|
||||
CharacterSet="2"
|
||||
WholeProgramOptimization="1"
|
||||
@@ -138,7 +138,7 @@
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="odbc32.lib odbccp32.lib comctl32.lib zlibdll.lib bmm.lib core.lib CustDlg.lib edmodel.lib expr.lib flt.lib geom.lib gfx.lib gup.lib helpsys.lib imageViewers.lib ManipSys.lib maxnet.lib Maxscrpt.lib maxutil.lib MenuMan.lib menus.lib mesh.lib MNMath.lib Paramblk2.lib particle.lib Poly.lib RenderUtil.lib SpringSys.lib tessint.lib viewfile.lib acap.lib TKernel.lib TKMath.lib TKBRep.lib TKGeomBase.lib TKGeomAlgo.lib TKG3d.lib TKG2d.lib TKShHealing.lib TKTopAlgo.lib TKMesh.lib TKPrim.lib TKBool.lib TKBO.lib TKFillet.lib"
|
||||
OutputFile="$(OutDir)\$(ProjectName).dli"
|
||||
ModuleDefinitionFile="..\src\ifcmax\ifcmax.def"
|
||||
ModuleDefinitionFile="..\..\src\ifcmax\ifcmax.def"
|
||||
GenerateDebugInformation="true"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
@@ -176,7 +176,7 @@
|
||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
|
||||
>
|
||||
<File
|
||||
RelativePath="..\src\ifcmax\IfcMax.cpp"
|
||||
RelativePath="..\..\src\ifcmax\IfcMax.cpp"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
@@ -186,16 +186,16 @@
|
||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
|
||||
>
|
||||
<File
|
||||
RelativePath="..\src\ifcmax\IfcMax.h"
|
||||
RelativePath="..\..\src\ifcmax\IfcMax.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcmax\MaxMaterials.h"
|
||||
RelativePath="..\..\src\ifcmax\MaxMaterials.h"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
<File
|
||||
RelativePath="..\src\ifcmax\IfcMax.def"
|
||||
RelativePath="..\..\src\ifcmax\IfcMax.def"
|
||||
>
|
||||
</File>
|
||||
</Files>
|
||||
@@ -17,8 +17,8 @@
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="..\build\debug"
|
||||
IntermediateDirectory="..\temp\house\debug"
|
||||
OutputDirectory="..\..\build\debug"
|
||||
IntermediateDirectory="..\..\temp\house\debug"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2"
|
||||
>
|
||||
@@ -88,8 +88,8 @@
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="..\build\release"
|
||||
IntermediateDirectory="..\temp\house\release"
|
||||
OutputDirectory="..\..\build\release"
|
||||
IntermediateDirectory="..\..\temp\house\release"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2"
|
||||
WholeProgramOptimization="1"
|
||||
@@ -168,7 +168,7 @@
|
||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
|
||||
>
|
||||
<File
|
||||
RelativePath="..\src\examples\IfcOpenHouse.cpp"
|
||||
RelativePath="..\..\src\examples\IfcOpenHouse.cpp"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
@@ -17,8 +17,8 @@
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="..\build\debug"
|
||||
IntermediateDirectory="..\temp\parse\debug"
|
||||
OutputDirectory="..\..\build\debug"
|
||||
IntermediateDirectory="..\..\temp\parse\debug"
|
||||
ConfigurationType="4"
|
||||
CharacterSet="2"
|
||||
BuildLogFile="$(IntDir)\BuildLog.htm"
|
||||
@@ -80,8 +80,8 @@
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="..\build\release"
|
||||
IntermediateDirectory="..\temp\parse\release"
|
||||
OutputDirectory="..\..\build\release"
|
||||
IntermediateDirectory="..\..\temp\parse\release"
|
||||
ConfigurationType="4"
|
||||
CharacterSet="2"
|
||||
WholeProgramOptimization="1"
|
||||
@@ -150,7 +150,7 @@
|
||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
|
||||
>
|
||||
<File
|
||||
RelativePath="..\src\ifcparse\Ifc2x3-latebound.cpp"
|
||||
RelativePath="..\..\src\ifcparse\Ifc2x3-latebound.cpp"
|
||||
>
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32"
|
||||
@@ -162,7 +162,7 @@
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcparse\Ifc2x3.cpp"
|
||||
RelativePath="..\..\src\ifcparse\Ifc2x3.cpp"
|
||||
>
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32"
|
||||
@@ -174,7 +174,7 @@
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcparse\Ifc4-latebound.cpp"
|
||||
RelativePath="..\..\src\ifcparse\Ifc4-latebound.cpp"
|
||||
>
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32"
|
||||
@@ -186,7 +186,7 @@
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcparse\Ifc4.cpp"
|
||||
RelativePath="..\..\src\ifcparse\Ifc4.cpp"
|
||||
>
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32"
|
||||
@@ -198,39 +198,39 @@
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcparse\IfcCharacterDecoder.cpp"
|
||||
RelativePath="..\..\src\ifcparse\IfcCharacterDecoder.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcparse\IfcParse.cpp"
|
||||
RelativePath="..\..\src\ifcparse\IfcParse.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcparse\IfcUtil.cpp"
|
||||
RelativePath="..\..\src\ifcparse\IfcUtil.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcparse\IfcWrite.cpp"
|
||||
RelativePath="..\..\src\ifcparse\IfcWrite.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcparse\IfcSIPrefix.cpp"
|
||||
RelativePath="..\..\src\ifcparse\IfcSIPrefix.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcparse\IfcSpfHeader.cpp"
|
||||
RelativePath="..\..\src\ifcparse\IfcSpfHeader.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcparse\IfcGlobalId.cpp"
|
||||
RelativePath="..\..\src\ifcparse\IfcGlobalId.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcparse\IfcHierarchyHelper.cpp"
|
||||
RelativePath="..\..\src\ifcparse\IfcHierarchyHelper.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcparse\IfcLateBoundEntity.cpp"
|
||||
RelativePath="..\..\src\ifcparse\IfcLateBoundEntity.cpp"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
@@ -240,87 +240,87 @@
|
||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
|
||||
>
|
||||
<File
|
||||
RelativePath="..\src\ifcparse\Ifc2x3-latebound.h"
|
||||
RelativePath="..\..\src\ifcparse\Ifc2x3-latebound.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcparse\Ifc2x3.h"
|
||||
RelativePath="..\..\src\ifcparse\Ifc2x3.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcparse\Ifc2x3enum.h"
|
||||
RelativePath="..\..\src\ifcparse\Ifc2x3enum.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcparse\Ifc4-latebound.h"
|
||||
RelativePath="..\..\src\ifcparse\Ifc4-latebound.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcparse\Ifc4.h"
|
||||
RelativePath="..\..\src\ifcparse\Ifc4.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcparse\Ifc4enum.h"
|
||||
RelativePath="..\..\src\ifcparse\Ifc4enum.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcparse\IfcCharacterDecoder.h"
|
||||
RelativePath="..\..\src\ifcparse\IfcCharacterDecoder.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcparse\IfcEntityDescriptor.h"
|
||||
RelativePath="..\..\src\ifcparse\IfcEntityDescriptor.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcparse\IfcException.h"
|
||||
RelativePath="..\..\src\ifcparse\IfcException.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcparse\IfcFile.h"
|
||||
RelativePath="..\..\src\ifcparse\IfcFile.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcparse\IfcGlobalId.h"
|
||||
RelativePath="..\..\src\ifcparse\IfcGlobalId.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcparse\IfcHierarchyHelper.h"
|
||||
RelativePath="..\..\src\ifcparse\IfcHierarchyHelper.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcparse\IfcLateBoundEntity.h"
|
||||
RelativePath="..\..\src\ifcparse\IfcLateBoundEntity.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcparse\IfcParse.h"
|
||||
RelativePath="..\..\src\ifcparse\IfcParse.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcparse\IfcSIPrefix.h"
|
||||
RelativePath="..\..\src\ifcparse\IfcSIPrefix.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcparse\IfcSpfHeader.h"
|
||||
RelativePath="..\..\src\ifcparse\IfcSpfHeader.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcparse\IfcSpfStream.h"
|
||||
RelativePath="..\..\src\ifcparse\IfcSpfStream.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcparse\IfcUtil.h"
|
||||
RelativePath="..\..\src\ifcparse\IfcUtil.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcparse\IfcWritableEntity.h"
|
||||
RelativePath="..\..\src\ifcparse\IfcWritableEntity.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcparse\IfcWrite.h"
|
||||
RelativePath="..\..\src\ifcparse\IfcWrite.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcparse\SharedPointer.h"
|
||||
RelativePath="..\..\src\ifcparse\SharedPointer.h"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
@@ -18,8 +18,8 @@
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="..\build\debug"
|
||||
IntermediateDirectory="..\temp\examples\debug"
|
||||
OutputDirectory="..\..\build\debug"
|
||||
IntermediateDirectory="..\..\temp\examples\debug"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="1"
|
||||
>
|
||||
@@ -90,8 +90,8 @@
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="..\build\release"
|
||||
IntermediateDirectory="..\temp\examples\release"
|
||||
OutputDirectory="..\..\build\release"
|
||||
IntermediateDirectory="..\..\temp\examples\release"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="1"
|
||||
WholeProgramOptimization="1"
|
||||
@@ -173,7 +173,7 @@
|
||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
|
||||
>
|
||||
<File
|
||||
RelativePath="..\src\examples\IfcParseExamples.cpp"
|
||||
RelativePath="..\..\src\examples\IfcParseExamples.cpp"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
@@ -14,12 +14,12 @@
|
||||
</Platforms>
|
||||
<ToolFiles>
|
||||
</ToolFiles>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
<..\..s>
|
||||
<..\..
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="..\build\debug"
|
||||
IntermediateDirectory="..\temp\wrap\debug"
|
||||
ConfigurationType="2"
|
||||
..\..Type="2"
|
||||
CharacterSet="2"
|
||||
BuildLogFile="$(IntDir)\BuildLog.htm"
|
||||
>
|
||||
@@ -87,12 +87,12 @@
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
</..\..>
|
||||
<..\..
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="..\build\release"
|
||||
IntermediateDirectory="..\temp\wrap\release"
|
||||
ConfigurationType="2"
|
||||
..\..Type="2"
|
||||
CharacterSet="2"
|
||||
WholeProgramOptimization="1"
|
||||
>
|
||||
@@ -160,8 +160,8 @@
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
</..\..>
|
||||
</..\..s>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
@@ -184,7 +184,7 @@
|
||||
<File
|
||||
RelativePath="..\src\ifcwrap\IfcPython.i"
|
||||
>
|
||||
<FileConfiguration
|
||||
<File..\..
|
||||
Name="Debug|Win32"
|
||||
>
|
||||
<Tool
|
||||
@@ -192,8 +192,8 @@
|
||||
CommandLine="swig -c++ -python $(InputPath)
"
|
||||
Outputs="$(InputDir)$(InputName)_wrap.cpp"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
</File..\..>
|
||||
<File..\..
|
||||
Name="Release|Win32"
|
||||
>
|
||||
<Tool
|
||||
@@ -201,7 +201,7 @@
|
||||
CommandLine="swig -c++ -python $(InputPath)
"
|
||||
Outputs="$(InputDir)$(InputName)_wrap.cpp"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File..\..>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\ifcwrap\IfcGeomWrapper.i"
|
||||
@@ -0,0 +1,16 @@
|
||||
Original information from the README.md:
|
||||
|
||||
For Windows users a prebuilt Open CASCADE version is available from the
|
||||
http://opencascade.org website. Download and install this version and
|
||||
provide the paths to the Open CASCADE header and library files to MS
|
||||
Visual Studio C++.
|
||||
|
||||
For building the Autodesk 3ds Max plugin, the 3ds Max SDK needs to be
|
||||
installed as well as 3ds Max itself. Please provide the include and
|
||||
library paths to Visual Studio.
|
||||
|
||||
For building the IfcPython wrapper, SWIG needs to be installed. Please
|
||||
download the latest swigwin version from http://www.swig.org/download.html.
|
||||
After extracting the .zip file, please add the extracted folder to the PATH
|
||||
environment variable. Python needs to be installed, please provide the
|
||||
include and library paths to Visual Studio.
|
||||
Binary file not shown.
@@ -0,0 +1,4 @@
|
||||
:: Usage: call cecho.cmd background foreground "message here"
|
||||
:: NOTES/TODOS 1) This is super slow 2) leading spaces are omitted 3) printing string with quotes doesn't work (quotes must be escaped awkwardly)
|
||||
@powershell -command write-host -background %~1 -foreground "%~2" "%3"
|
||||
@exit /b
|
||||
@@ -0,0 +1,29 @@
|
||||
7-Zip Command line version
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
License for use and distribution
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
7-Zip Copyright (C) 1999-2010 Igor Pavlov.
|
||||
|
||||
7za.exe is distributed under the GNU LGPL license
|
||||
|
||||
Notes:
|
||||
You can use 7-Zip on any computer, including a computer in a commercial
|
||||
organization. You don't need to register or pay for 7-Zip.
|
||||
|
||||
|
||||
GNU LGPL information
|
||||
--------------------
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You can receive a copy of the GNU Lesser General Public License from
|
||||
http://www.gnu.org/
|
||||
+149
@@ -0,0 +1,149 @@
|
||||
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
:: ::
|
||||
:: This file is part of IfcOpenShell. ::
|
||||
:: ::
|
||||
:: IfcOpenShell is free software: you can redistribute it and/or modify ::
|
||||
:: it under the terms of the Lesser GNU General Public License as published by ::
|
||||
:: the Free Software Foundation, either version 3.0 of the License, or ::
|
||||
:: (at your option) any later version. ::
|
||||
:: ::
|
||||
:: IfcOpenShell is distributed in the hope that it will be useful, ::
|
||||
:: but WITHOUT ANY WARRANTY; without even the implied warranty of ::
|
||||
:: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ::
|
||||
:: Lesser GNU General Public License for more details. ::
|
||||
:: ::
|
||||
:: You should have received a copy of the Lesser GNU General Public License ::
|
||||
:: along with this program. If not, see <http://www.gnu.org/licenses/>. ::
|
||||
:: ::
|
||||
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
|
||||
:: This script initializes various Visual Studio -related environment variables needed for building
|
||||
:: This batch file expects CMake generator as %1 and build configuration type as %2.
|
||||
:: NOTE: The delayed environment variable expansion needs to be enabled before calling this.
|
||||
|
||||
@echo off
|
||||
|
||||
set GENERATOR=%1
|
||||
|
||||
:: TODO IDEA: Take more user-friendly VS generators and convert them to the CMake ones?
|
||||
:: F.ex. "vs2013-32" and/or "vc14-64"
|
||||
|
||||
:: TODO Print CMake and VS versions. Maybe in build-deps.cmd would be better than here.
|
||||
|
||||
:: Supported Visual Studio versions:
|
||||
set GENERATORS[0]="Visual Studio 14 2015"
|
||||
set GENERATORS[1]="Visual Studio 14 2015 Win64"
|
||||
:: TODO Check CMake version and convert possible new format (>= 3.0) generator names
|
||||
:: to the old versions if using older CMake for VS <= 2013,
|
||||
:: see http://www.cmake.org/cmake/help/v3.0/release/3.0.0.html#other-changes
|
||||
set GENERATORS[2]="Visual Studio 12"
|
||||
set GENERATORS[3]="Visual Studio 12 Win64"
|
||||
set GENERATORS[4]="Visual Studio 11"
|
||||
set GENERATORS[5]="Visual Studio 11 Win64"
|
||||
set GENERATORS[6]="Visual Studio 10"
|
||||
set GENERATORS[7]="Visual Studio 10 Win64"
|
||||
set GENERATORS[8]="Visual Studio 9 2008"
|
||||
set GENERATORS[9]="Visual Studio 9 2008 Win64"
|
||||
set GENERATOR_DEFAULT=%GENERATORS[1]%
|
||||
|
||||
IF "!GENERATOR!"=="" (
|
||||
set GENERATOR=%GENERATOR_DEFAULT%
|
||||
call utils\cecho.cmd 0 14 "%~nx0: Warning: Generator not passed - using the default '`"%GENERATOR_DEFAULT%`'`t
|
||||
)
|
||||
|
||||
FOR /l %%i in (0,1,9) DO (
|
||||
IF !GENERATOR!==!GENERATORS[%%i]! GOTO :GeneratorValid
|
||||
)
|
||||
call utils\cecho.cmd 0 12 "%~nx0: Invalid or unsupported CMake generator string passed: '`"!GENERATOR!`'". Cannot proceed, aborting!"
|
||||
exit /b 1
|
||||
|
||||
:GeneratorValid
|
||||
:: Figure out the build configuration from the CMake generator string.
|
||||
:: Are we building 32-bit or 64-bit version.
|
||||
set ARCH_BITS=32
|
||||
set TARGET_ARCH=x86
|
||||
:: Visual Studio platform name, Win32 (i.e. x86) or x64.
|
||||
set VS_PLATFORM=Win32
|
||||
|
||||
:: Find out VS version, VC versions and are we doing 64-bit or not.
|
||||
:: VS_VER and VC_VER are convenience variables used f.ex. for filenames.
|
||||
set GENERATOR_NO_DOUBLEQUOTES=%GENERATOR:"=%
|
||||
set GENERATOR_SPLIT=%GENERATOR_NO_DOUBLEQUOTES: =,%
|
||||
FOR %%i IN (%GENERATOR_SPLIT%) DO (
|
||||
call :StrLength LEN %%i
|
||||
IF !LEN!==1 set VC_VER=%%i
|
||||
IF !LEN!==2 set VC_VER=%%i
|
||||
IF !LEN!==4 set VS_VER=%%i
|
||||
REM Are going to perform a 64-bit build?
|
||||
IF %%i==Win64 (
|
||||
set ARCH_BITS=64
|
||||
set TARGET_ARCH=x64
|
||||
set VS_PLATFORM=x64
|
||||
)
|
||||
)
|
||||
|
||||
:: VS project file extension is different on older VS versions
|
||||
set VCPROJ_FILE_EXT=vcxproj
|
||||
IF %VS_VER%==2008 set VCPROJ_FILE_EXT=vcproj
|
||||
|
||||
:: Set up variables depending on the used build configuration type.
|
||||
set BUILD_CFG=%2
|
||||
|
||||
:: The default build types provided by CMake
|
||||
set BUILD_CFG_MINSIZEREL=MinSizeRel
|
||||
set BUILD_CFG_RELEASE=Release
|
||||
set BUILD_CFG_RELWITHDEBINFO=RelWithDebInfo
|
||||
set BUILD_CFG_DEBUG=Debug
|
||||
set BUILD_CFG_DEFAULT=%BUILD_CFG_RELWITHDEBINFO%
|
||||
|
||||
IF "!BUILD_CFG!"=="" (
|
||||
set BUILD_CFG=%BUILD_CFG_DEFAULT%
|
||||
call utils\cecho.cmd 0 14 "%~nx0: Warning: BUILD_CFG not specified - using the default %BUILD_CFG_DEFAULT%"
|
||||
)
|
||||
IF NOT !BUILD_CFG!==%BUILD_CFG_MINSIZEREL% IF NOT !BUILD_CFG!==%BUILD_CFG_RELEASE% (
|
||||
IF NOT !BUILD_CFG!==%BUILD_CFG_RELWITHDEBINFO% IF NOT !BUILD_CFG!==%BUILD_CFG_DEBUG% (
|
||||
call utils\cecho.cmd 0 12 "%~nx0: Invalid or unsupported CMake build configuration type passed: !BUILD_CFG!. Cannot proceed, aborting!"
|
||||
exit /b 1
|
||||
))
|
||||
|
||||
:: DEBUG_OR_RELEASE and DEBUG_OR_RELEASE_LOWERCASE are "Debug" and "debug" for Debug build and "Release" and
|
||||
:: "release" for all of the Release variants.
|
||||
:: POSTFIX_D, POSTFIX_UNDERSCORE_D and POSTFIX_UNDERSCORE_DEBUG are helpers for performing file copies and
|
||||
:: checking for existence of files. In release build these variables are empty.
|
||||
set DEBUG_OR_RELEASE=Release
|
||||
set DEBUG_OR_RELEASE_LOWERCASE=release
|
||||
set POSTFIX_D=
|
||||
set POSTFIX_UNDERSCORE_D=
|
||||
set POSTFIX_UNDERSCORE_DEBUG=
|
||||
IF %BUILD_CFG%==Debug (
|
||||
set DEBUG_OR_RELEASE=Debug
|
||||
set DEBUG_OR_RELEASE_LOWERCASE=debug
|
||||
set POSTFIX_D=d
|
||||
set POSTFIX_UNDERSCORE_D=_d
|
||||
set POSTFIX_UNDERSCORE_DEBUG=_debug
|
||||
)
|
||||
|
||||
:: Add utils to PATH
|
||||
set ORIGINAL_PATH=%PATH%
|
||||
set PATH=%PATH%;%~dp0\utils
|
||||
|
||||
:: Fetch and build the dependencies to a dedicated directory depending on the used VS version and target architecture.
|
||||
:: NOTE For IfcOpenShell we can build all of our deps both x86 and x64 using different VS versions in the same directories
|
||||
:: so no need for -%VS_VER%-%TARGET_ARCH% postfix.
|
||||
:: set DEPS_DIR=%CD%\deps-%VS_VER%-%TARGET_ARCH%
|
||||
pushd ..
|
||||
set DEPS_DIR=%CD%\deps
|
||||
set INSTALL_DIR=%CD%\deps-vs%VS_VER%-%TARGET_ARCH%-installed
|
||||
REM set INSTALL_DIR=%CD%\deps-vs%VS_VER%-%TARGET_ARCH%-%DEBUG_OR_RELEASE_LOWERCASE%-installed
|
||||
popd
|
||||
|
||||
GOTO :EOF
|
||||
:: http://geekswithblogs.net/SoftwareDoneRight/archive/2010/01/30/useful-dos-batch-functions-substring-and-length.aspx
|
||||
:StrLength
|
||||
set #=%2%
|
||||
set length=0
|
||||
:stringLengthLoop
|
||||
if defined # (set #=%#:~1%&set /A length += 1&goto stringLengthLoop)
|
||||
::echo the string is %length% characters long!
|
||||
set "%~1=%length%"
|
||||
GOTO :EOF
|
||||
Reference in New Issue
Block a user