diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 1d90a0a5bf..205fb336e3 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -432,7 +432,11 @@ if(NOT WIN32) LINK_DIRECTORIES(${LINK_DIRECTORIES} /usr/lib /usr/lib64 /usr/local/lib /usr/local/lib64) endif() -SET(IFCOPENSHELL_LIBRARIES IfcParse IfcGeom) +if(BUILD_SHARED_LIBS) + SET(IFCOPENSHELL_LIBRARIES IfcGeom) +else() + SET(IFCOPENSHELL_LIBRARIES IfcParse IfcGeom) +endif() # IfcParse file(GLOB IFCPARSE_H_FILES ../src/ifcparse/*.h) @@ -459,13 +463,17 @@ ENDIF() file(GLOB IFCGEOM_H_FILES ../src/ifcgeom/*.h) file(GLOB IFCGEOM_CPP_FILES ../src/ifcgeom/*.cpp) set(IFCGEOM_FILES ${IFCGEOM_CPP_FILES} ${IFCGEOM_H_FILES}) + IF(BUILD_SHARED_LIBS) - message(WARNING "Building IfcGeom as shared library not currently supported") - add_library(IfcGeom STATIC ${IFCGEOM_FILES}) -ELSE() - add_library(IfcGeom ${IFCGEOM_FILES}) + message(WARNING "Building IfcGeom as shared library currently not supported depending on platform and compiler options") ENDIF() +if(WIN32) + add_library(IfcGeom STATIC ${IFCGEOM_FILES}) +else() + add_library(IfcGeom ${IFCGEOM_FILES}) +endif() + TARGET_LINK_LIBRARIES(IfcGeom IfcParse) # IfcConvert diff --git a/src/ifcmax/CMakeLists.txt b/src/ifcmax/CMakeLists.txt index 6dbff071a5..c9096f846f 100644 --- a/src/ifcmax/CMakeLists.txt +++ b/src/ifcmax/CMakeLists.txt @@ -28,7 +28,8 @@ LINK_DIRECTORIES(${LINK_DIRECTORIES} ${IfcOpenShell_BINARY_DIR} ${OCC_LIBRARY_DI ADD_LIBRARY(IfcMax SHARED IfcMax.h IfcMax.cpp) -TARGET_LINK_LIBRARIES(IfcMax ${IFCLIBS} Comctl32.lib zlibdll.lib bmm.lib core.lib CustDlg.lib edmodel.lib expr.lib +# TODO: find the minimal subset of 3dsmax libraries to reference +TARGET_LINK_LIBRARIES(IfcMax ${IFCOPENSHELL_LIBRARIES} Comctl32.lib zlibdll.lib bmm.lib core.lib CustDlg.lib edmodel.lib expr.lib flt.lib geom.lib gfx.lib gup.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 tessint.lib viewfile.lib ${OPENCASCADE_LIBRARIES} diff --git a/src/ifcparse/IfcParse.cpp b/src/ifcparse/IfcParse.cpp index 1de1627224..c59582bc02 100644 --- a/src/ifcparse/IfcParse.cpp +++ b/src/ifcparse/IfcParse.cpp @@ -560,9 +560,9 @@ double TokenFunc::asFloat(const Token& t) { const std::string &TokenFunc::asStringRef(const Token& t) { std::string &str = t.lexer->GetTempString(); t.lexer->TokenString(t.startPos, str); - if (isString(t) || isEnumeration(t) || isBinary(t)) { + if ((isString(t) || isEnumeration(t) || isBinary(t)) && !str.empty()) { //remove start+end characters in-place - str.pop_back(); + str.erase(str.end()-1); str.erase(str.begin()); } return str;