Fixes to build on openSUSE/Packman. (#67)

- Support different BINDIR, INCLUDEDIR and LIBDIR on install
- Take right python dir on x86_64 arch
- Fix build against Boost >= 1.58
- Make it possible to build libIfcGeom shared to reduce size of dependent binaries
- Fix INSTALL_RPATH
- Fix some more compiler warnings
This commit is contained in:
Johannes Obermayr
2016-05-15 15:47:21 +02:00
committed by Thomas Krijnen
parent 414d7bb810
commit 42188904af
13 changed files with 97 additions and 38 deletions
+70 -12
View File
@@ -30,10 +30,38 @@ OPTION(BUILD_IFCPYTHON "Build IfcPython." ON)
OPTION(BUILD_EXAMPLES "Build example applications." ON) OPTION(BUILD_EXAMPLES "Build example applications." ON)
OPTION(USE_VLD "Use Visual Leak Detector for debugging memory leaks, MSVC-only." OFF) OPTION(USE_VLD "Use Visual Leak Detector for debugging memory leaks, MSVC-only." OFF)
OPTION(BUILD_IFCMAX "Build IfcMax, a 3ds Max plug-in, Windows-only." OFF) OPTION(BUILD_IFCMAX "Build IfcMax, a 3ds Max plug-in, Windows-only." OFF)
OPTION(BUILD_SHARED_LIBS "Build ifcparse and ifcgeom libs shared." OFF)
# TODO QtViewer is deprecated ATM as it uses the 0.4 API # 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) # OPTION(BUILD_QTVIEWER "Build IfcOpenShell Qt GUI Viewer (requires Qt 4 framework)." OFF)
# Specify where to install files
IF(NOT BINDIR)
set(BINDIR bin)
ENDIF()
IF(NOT IS_ABSOLUTE ${BINDIR})
set(BINDIR ${CMAKE_INSTALL_PREFIX}/${BINDIR})
ENDIF()
MESSAGE(STATUS "BINDIR: ${BINDIR}")
IF(NOT INCLUDEDIR)
set(INCLUDEDIR include)
ENDIF()
IF(NOT IS_ABSOLUTE ${INCLUDEDIR})
set(INCLUDEDIR ${CMAKE_INSTALL_PREFIX}/${INCLUDEDIR})
ENDIF()
MESSAGE(STATUS "INCLUDEDIR: ${INCLUDEDIR}")
IF(NOT LIBDIR)
set(LIBDIR lib)
ENDIF()
IF(NOT IS_ABSOLUTE ${LIBDIR})
set(LIBDIR ${CMAKE_INSTALL_PREFIX}/${LIBDIR})
ENDIF()
MESSAGE(STATUS "LIBDIR: ${LIBDIR}")
# Create cache entries if absent for environment variables # Create cache entries if absent for environment variables
MACRO(UNIFY_ENVVARS_AND_CACHE VAR) MACRO(UNIFY_ENVVARS_AND_CACHE VAR)
IF ((NOT DEFINED ${VAR}) AND (NOT "$ENV{${VAR}}" STREQUAL "")) IF ((NOT DEFINED ${VAR}) AND (NOT "$ENV{${VAR}}" STREQUAL ""))
@@ -53,6 +81,20 @@ IF(WIN32)
UNIFY_ENVVARS_AND_CACHE(THREEDS_MAX_SDK_HOME) UNIFY_ENVVARS_AND_CACHE(THREEDS_MAX_SDK_HOME)
ENDIF() ENDIF()
# Set INSTALL_RPATH for target
MACRO(SET_INSTALL_RPATHS _target _paths)
SET(${_target}_rpaths "")
FOREACH(_path ${_paths})
LIST(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${_path}" isSystemDir)
IF("${isSystemDir}" STREQUAL "-1")
LIST(APPEND ${_target}_rpaths ${_path})
ENDIF()
ENDFOREACH()
MESSAGE(STATUS "Set INSTALL_RPATH for ${_target}: ${${_target}_rpaths}")
SET_TARGET_PROPERTIES(${_target} PROPERTIES INSTALL_RPATH "${${_target}_rpaths}")
ENDMACRO()
# Find Boost # Find Boost
IF(MSVC) IF(MSVC)
SET(Boost_USE_STATIC_LIBS ON) SET(Boost_USE_STATIC_LIBS ON)
@@ -135,7 +177,7 @@ IF(UNICODE_SUPPORT)
SET(ICU_LIBRARY_DIR "${ICU_LIBRARY_DIR}" CACHE FILEPATH "ICU library files") SET(ICU_LIBRARY_DIR "${ICU_LIBRARY_DIR}" CACHE FILEPATH "ICU library files")
ENDIF() ENDIF()
FIND_LIBRARY(icu NAMES icuuc icuucd PATHS /usr/lib /usr/lib64 /usr/local/lib /usr/local/lib64 ${ICU_LIBRARY_DIR}) FIND_LIBRARY(icu NAMES icuuc icuucd PATHS /usr/lib64 /usr/lib /usr/local/lib64 /usr/local/lib ${ICU_LIBRARY_DIR})
IF(icu) IF(icu)
ADD_DEFINITIONS(-DHAVE_ICU) ADD_DEFINITIONS(-DHAVE_ICU)
@@ -165,10 +207,10 @@ IF(COLLADA_SUPPORT)
IF("${OPENCOLLADA_LIBRARY_DIR}" STREQUAL "") IF("${OPENCOLLADA_LIBRARY_DIR}" STREQUAL "")
MESSAGE(STATUS "No OpenCOLLADA library directory specified") MESSAGE(STATUS "No OpenCOLLADA library directory specified")
SET(OPENCOLLADA_LIBRARY_DIR "/usr/lib/opencollada" CACHE FILEPATH "OpenCOLLADA library files") FIND_LIBRARY(OPENCOLLADA_FRAMEWORK_LIB NAMES OpenCOLLADAFramework PATHS /usr/lib64/opencollada /usr/lib/opencollada /usr/lib64 /usr/lib /usr/local/lib64 /usr/local/lib)
ElSE() GET_FILENAME_COMPONENT(OPENCOLLADA_LIBRARY_DIR ${OPENCOLLADA_FRAMEWORK_LIB} PATH)
SET(OPENCOLLADA_LIBRARY_DIR "${OPENCOLLADA_LIBRARY_DIR}" CACHE FILEPATH "OpenCOLLADA library files")
ENDIF() ENDIF()
SET(OPENCOLLADA_LIBRARY_DIR "${OPENCOLLADA_LIBRARY_DIR}" CACHE FILEPATH "OpenCOLLADA library files")
SET(OPENCOLLADA_INCLUDE_DIRS "${OPENCOLLADA_INCLUDE_DIR}/COLLADABaseUtils" "${OPENCOLLADA_INCLUDE_DIR}/COLLADAStreamWriter") SET(OPENCOLLADA_INCLUDE_DIRS "${OPENCOLLADA_INCLUDE_DIR}/COLLADABaseUtils" "${OPENCOLLADA_INCLUDE_DIR}/COLLADAStreamWriter")
@@ -361,6 +403,11 @@ else()
endif() endif()
endif() endif()
# Boost >= 1.58 requires BOOST_OPTIONAL_USE_OLD_DEFINITION_OF_NONE to build
if(NOT Boost_VERSION LESS 105800)
add_definitions(-DBOOST_OPTIONAL_USE_OLD_DEFINITION_OF_NONE)
endif()
# IfcParse # IfcParse
file(GLOB IFCPARSE_H_FILES ../src/ifcparse/*.h) file(GLOB IFCPARSE_H_FILES ../src/ifcparse/*.h)
file(GLOB IFCPARSE_CPP_FILES ../src/ifcparse/*.cpp) file(GLOB IFCPARSE_CPP_FILES ../src/ifcparse/*.cpp)
@@ -386,7 +433,15 @@ file(GLOB IFCGEOM_H_FILES ../src/ifcgeom/*.h)
file(GLOB IFCGEOM_CPP_FILES ../src/ifcgeom/*.cpp) file(GLOB IFCGEOM_CPP_FILES ../src/ifcgeom/*.cpp)
set(IFCGEOM_FILES ${IFCGEOM_CPP_FILES} ${IFCGEOM_H_FILES}) set(IFCGEOM_FILES ${IFCGEOM_CPP_FILES} ${IFCGEOM_H_FILES})
ADD_LIBRARY(IfcGeom STATIC ${IFCGEOM_FILES}) IF(BUILD_SHARED_LIBS)
ADD_LIBRARY(IfcGeom SHARED ${IFCGEOM_FILES})
SET(IFCLIBS "IfcGeom")
SET(IFCDIRS "${LIBDIR}")
ELSE()
ADD_LIBRARY(IfcGeom STATIC ${IFCGEOM_FILES})
SET(IFCLIBS "IfcParse;IfcGeom")
SET(IFCDIRS "")
ENDIF()
TARGET_LINK_LIBRARIES(IfcGeom IfcParse) TARGET_LINK_LIBRARIES(IfcGeom IfcParse)
@@ -414,10 +469,12 @@ if("${libTKernelExt}" STREQUAL ".a")
if (NOT APPLE) if (NOT APPLE)
set(LIB_RT "rt") set(LIB_RT "rt")
endif() endif()
set(OPENCASCADE_LIBRARIES ${OPENCASCADE_LIBRARIES} ${OPENCASCADE_LIBRARIES} ${OPENCASCADE_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${LIB_RT} dl) set(OPENCASCADE_LIBRARIES ${OPENCASCADE_LIBRARIES} ${OPENCASCADE_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${LIB_RT} dl)
endif() endif()
TARGET_LINK_LIBRARIES(IfcConvert IfcParse IfcGeom ${OPENCASCADE_LIBRARIES} ${Boost_LIBRARIES} ${OPENCOLLADA_LIBRARIES} ${ICU_LIBRARIES}) TARGET_LINK_LIBRARIES(IfcConvert ${IFCLIBS} ${OPENCASCADE_LIBRARIES} ${Boost_LIBRARIES} ${OPENCOLLADA_LIBRARIES} ${ICU_LIBRARIES})
SET_INSTALL_RPATHS(IfcConvert "${IFCDIRS};${OCC_LIBRARY_DIR};${Boost_LIBRARY_DIRS};${OPENCOLLADA_LIBRARY_DIR};${ICU_LIBRARY_DIR}")
# IfcGeomServer # IfcGeomServer
file(GLOB CPP_FILES ../src/ifcgeomserver/*.cpp) file(GLOB CPP_FILES ../src/ifcgeomserver/*.cpp)
@@ -425,7 +482,8 @@ file(GLOB H_FILES ../src/ifcgeomserver/*.h)
set(SOURCE_FILES ${CPP_FILES} ${H_FILES}) set(SOURCE_FILES ${CPP_FILES} ${H_FILES})
ADD_EXECUTABLE(IfcGeomServer ${SOURCE_FILES}) ADD_EXECUTABLE(IfcGeomServer ${SOURCE_FILES})
TARGET_LINK_LIBRARIES(IfcGeomServer IfcParse IfcGeom ${OPENCASCADE_LIBRARIES} ${Boost_LIBRARIES} ${ICU_LIBRARIES}) TARGET_LINK_LIBRARIES(IfcGeomServer ${IFCLIBS} ${OPENCASCADE_LIBRARIES} ${Boost_LIBRARIES} ${ICU_LIBRARIES})
SET_INSTALL_RPATHS(IfcGeomServer "${IFCDIRS};${OCC_LIBRARY_DIR};${Boost_LIBRARY_DIRS};${ICU_LIBRARY_DIR}")
IF(BUILD_IFCPYTHON) IF(BUILD_IFCPYTHON)
ADD_SUBDIRECTORY(../src/ifcwrap ifcwrap) ADD_SUBDIRECTORY(../src/ifcwrap ifcwrap)
@@ -440,7 +498,7 @@ IF(BUILD_IFCMAX)
ENDIF() ENDIF()
# CMake installation targets # CMake installation targets
INSTALL(FILES ${IFCPARSE_H_FILES} DESTINATION include/ifcparse) INSTALL(FILES ${IFCPARSE_H_FILES} DESTINATION ${INCLUDEDIR}/ifcparse)
INSTALL(FILES ${IFCGEOM_H_FILES} DESTINATION include/ifcgeom) INSTALL(FILES ${IFCGEOM_H_FILES} DESTINATION ${INCLUDEDIR}/ifcgeom)
INSTALL(TARGETS IfcConvert IfcGeomServer DESTINATION bin) INSTALL(TARGETS IfcConvert IfcGeomServer DESTINATION ${BINDIR})
INSTALL(TARGETS IfcParse IfcGeom DESTINATION lib) INSTALL(TARGETS ${IFCLIBS} DESTINATION ${LIBDIR})
+6 -2
View File
@@ -18,9 +18,13 @@
################################################################################ ################################################################################
ADD_EXECUTABLE(IfcParseExamples IfcParseExamples.cpp) ADD_EXECUTABLE(IfcParseExamples IfcParseExamples.cpp)
TARGET_LINK_LIBRARIES(IfcParseExamples IfcParse) IF(BUILD_SHARED_LIBS)
TARGET_LINK_LIBRARIES(IfcParseExamples ${IFCLIBS})
ELSE()
TARGET_LINK_LIBRARIES(IfcParseExamples IfcParse)
ENDIF()
set_target_properties(IfcParseExamples PROPERTIES FOLDER Examples) set_target_properties(IfcParseExamples PROPERTIES FOLDER Examples)
ADD_EXECUTABLE(IfcOpenHouse IfcOpenHouse.cpp) ADD_EXECUTABLE(IfcOpenHouse IfcOpenHouse.cpp)
TARGET_LINK_LIBRARIES(IfcOpenHouse IfcParse IfcGeom ${OPENCASCADE_LIBRARIES}) TARGET_LINK_LIBRARIES(IfcOpenHouse ${IFCLIBS} ${OPENCASCADE_LIBRARIES})
set_target_properties(IfcOpenHouse PROPERTIES FOLDER Examples) set_target_properties(IfcOpenHouse PROPERTIES FOLDER Examples)
+4 -4
View File
@@ -106,8 +106,8 @@ private:
public: public:
explicit ColladaMaterials(COLLADASW::StreamWriter& stream, ColladaSerializer *_serializer) explicit ColladaMaterials(COLLADASW::StreamWriter& stream, ColladaSerializer *_serializer)
: COLLADASW::LibraryMaterials(&stream) : COLLADASW::LibraryMaterials(&stream)
, effects(stream) , serializer(_serializer)
, serializer(_serializer) , effects(stream)
{} {}
void add(const IfcGeom::Material& material); void add(const IfcGeom::Material& material);
bool contains(const IfcGeom::Material& material); bool contains(const IfcGeom::Material& material);
@@ -152,10 +152,10 @@ private:
ColladaExporter(const std::string& scene_name, const std::string& fn, ColladaSerializer *_serializer) ColladaExporter(const std::string& scene_name, const std::string& fn, ColladaSerializer *_serializer)
: filename(fn) : filename(fn)
, stream(filename, sizeof(real_t) == sizeof(double)) // utilise Collada stream's double precision feature , stream(filename, sizeof(real_t) == sizeof(double)) // utilise Collada stream's double precision feature
, geometries(stream, _serializer)
, scene(scene_name, stream, _serializer) , scene(scene_name, stream, _serializer)
, materials(stream, _serializer) , materials(stream, _serializer)
, serializer(_serializer) , geometries(stream, _serializer)
, serializer(_serializer)
{ {
} }
ColladaMaterials materials; ColladaMaterials materials;
+1 -1
View File
@@ -47,8 +47,8 @@ public:
: GeometrySerializer(settings) : GeometrySerializer(settings)
, svg_file(out_filename.c_str()) , svg_file(out_filename.c_str())
, xmin(+std::numeric_limits<double>::infinity()) , xmin(+std::numeric_limits<double>::infinity())
, xmax(-std::numeric_limits<double>::infinity())
, ymin(+std::numeric_limits<double>::infinity()) , ymin(+std::numeric_limits<double>::infinity())
, xmax(-std::numeric_limits<double>::infinity())
, ymax(-std::numeric_limits<double>::infinity()) , ymax(-std::numeric_limits<double>::infinity())
, rescale(false) , rescale(false)
, file(0) , file(0)
+1 -1
View File
@@ -37,8 +37,8 @@ private:
public: public:
WaveFrontOBJSerializer(const std::string& obj_filename, const std::string& mtl_filename, const IfcGeom::IteratorSettings &settings) WaveFrontOBJSerializer(const std::string& obj_filename, const std::string& mtl_filename, const IfcGeom::IteratorSettings &settings)
: GeometrySerializer(settings) : GeometrySerializer(settings)
, obj_stream(obj_filename.c_str())
, mtl_filename(mtl_filename) , mtl_filename(mtl_filename)
, obj_stream(obj_filename.c_str())
, mtl_stream(mtl_filename.c_str()) , mtl_stream(mtl_filename.c_str())
, vcount_total(1) , vcount_total(1)
{} {}
+1 -1
View File
@@ -58,7 +58,7 @@ namespace IfcGeom {
this->name = sstr.str(); this->name = sstr.str();
} }
SurfaceStyle(const std::string& name) : name(name), original_name_(name) {} SurfaceStyle(const std::string& name) : name(name), original_name_(name) {}
SurfaceStyle(int id, const std::string& name) : id(id), original_name_(name) SurfaceStyle(int id, const std::string& name) : original_name_(name), id(id)
{ {
std::stringstream sstr; std::stringstream sstr;
std::string sanitized = name; std::string sanitized = name;
+1 -1
View File
@@ -58,7 +58,7 @@ std::string sread(std::istream& s) {
buf[len] = 0; buf[len] = 0;
while (len++ % 4) s.get(); while (len++ % 4) s.get();
std::string str(buf); std::string str(buf);
delete buf; delete[] buf;
return str; return str;
} }
+2 -2
View File
@@ -28,7 +28,7 @@ LINK_DIRECTORIES(${LINK_DIRECTORIES} ${IfcOpenShell_BINARY_DIR} ${OCC_LIBRARY_DI
ADD_LIBRARY(IfcMax SHARED IfcMax.h IfcMax.cpp) ADD_LIBRARY(IfcMax SHARED IfcMax.h IfcMax.cpp)
TARGET_LINK_LIBRARIES(IfcMax IfcParse IfcGeom Comctl32.lib zlibdll.lib bmm.lib core.lib CustDlg.lib edmodel.lib expr.lib TARGET_LINK_LIBRARIES(IfcMax ${IFCLIBS} 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 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 maxutil.lib MenuMan.lib menus.lib mesh.lib MNMath.lib Paramblk2.lib particle.lib Poly.lib RenderUtil.lib
tessint.lib viewfile.lib ${OPENCASCADE_LIBRARIES} tessint.lib viewfile.lib ${OPENCASCADE_LIBRARIES}
@@ -36,4 +36,4 @@ TARGET_LINK_LIBRARIES(IfcMax IfcParse IfcGeom Comctl32.lib zlibdll.lib bmm.lib c
SET_TARGET_PROPERTIES(IfcMax PROPERTIES SUFFIX ".dli") SET_TARGET_PROPERTIES(IfcMax PROPERTIES SUFFIX ".dli")
INSTALL(TARGETS IfcMax RUNTIME DESTINATION bin) INSTALL(TARGETS IfcMax RUNTIME DESTINATION ${BINDIR})
+4 -9
View File
@@ -320,7 +320,6 @@ Token IfcSpfLexer::Next() {
int len = 0; int len = 0;
char p = 0;
while ( ! stream->eof ) { while ( ! stream->eof ) {
// Read character and increment pointer if not starting a new token // Read character and increment pointer if not starting a new token
@@ -331,8 +330,6 @@ Token IfcSpfLexer::Next() {
// If a string is encountered defer processing to the IfcCharacterDecoder // If a string is encountered defer processing to the IfcCharacterDecoder
if ( c == '\'' ) decoder->dryRun(); if ( c == '\'' ) decoder->dryRun();
p = c;
} }
if ( len ) return TokenPtr(this,pos); if ( len ) return TokenPtr(this,pos);
else return TokenPtr(); else return TokenPtr();
@@ -348,7 +345,6 @@ std::string IfcSpfLexer::TokenString(unsigned int offset) {
stream->Seek(offset); stream->Seek(offset);
std::string buffer; std::string buffer;
buffer.reserve(128); buffer.reserve(128);
char p = 0;
while ( ! stream->eof ) { while ( ! stream->eof ) {
char c = stream->Peek(); char c = stream->Peek();
if ( buffer.size() && (c == '(' || c == ')' || c == '=' || c == ',' || c == ';' || c == '/') ) break; if ( buffer.size() && (c == '(' || c == ')' || c == '=' || c == ',' || c == ';' || c == '/') ) break;
@@ -356,7 +352,6 @@ std::string IfcSpfLexer::TokenString(unsigned int offset) {
if ( c == ' ' || c == '\r' || c == '\n' || c == '\t' ) continue; if ( c == ' ' || c == '\r' || c == '\n' || c == '\t' ) continue;
else if ( c == '\'' ) return *decoder; else if ( c == '\'' ) return *decoder;
else buffer.push_back(c); else buffer.push_back(c);
p = c;
} }
if ( was_eof ) stream->eof = true; if ( was_eof ) stream->eof = true;
else stream->Seek(old_offset); else stream->Seek(old_offset);
@@ -790,7 +785,7 @@ EntityArgument::~EntityArgument() { delete entity; }
// //
// Reads an Entity from the list of Tokens // Reads an Entity from the list of Tokens
// //
Entity::Entity(unsigned int i, IfcFile* f) : _id(i), args(0) { Entity::Entity(unsigned int i, IfcFile* f) : args(0), _id(i) {
file = f; file = f;
Token datatype = f->tokens->Next(); Token datatype = f->tokens->Next();
if ( ! TokenFunc::isKeyword(datatype)) throw IfcException("Unexpected token while parsing entity"); if ( ! TokenFunc::isKeyword(datatype)) throw IfcException("Unexpected token while parsing entity");
@@ -904,10 +899,10 @@ IfcWrite::IfcWritableEntity* Entity::isWritable() {
IfcFile::IfcFile(bool create_latebound_entities) IfcFile::IfcFile(bool create_latebound_entities)
: _create_latebound_entities(create_latebound_entities) : _create_latebound_entities(create_latebound_entities)
, stream(0)
, lastId(0) , lastId(0)
, tokens(0)
, MaxId(0) , MaxId(0)
, tokens(0)
, stream(0)
{ {
setDefaultHeaderValues(); setDefaultHeaderValues();
} }
@@ -1542,4 +1537,4 @@ std::pair<IfcSchema::IfcNamedUnit*, double> IfcFile::getUnit(IfcSchema::IfcUnitE
} }
} }
return return_value; return return_value;
} }
+2 -2
View File
@@ -34,7 +34,7 @@ private:
HeaderEntity& operator =(const HeaderEntity&); //N/A HeaderEntity& operator =(const HeaderEntity&); //N/A
protected: protected:
HeaderEntity(const char * const datatype, IfcSpfLexer* lexer) HeaderEntity(const char * const datatype, IfcSpfLexer* lexer)
: _datatype(datatype), _list(0) : _list(0), _datatype(datatype)
{ {
std::vector<unsigned int> ids; std::vector<unsigned int> ids;
_list = new ArgumentList(); _list = new ArgumentList();
@@ -193,4 +193,4 @@ public:
} }
#endif #endif
+3 -2
View File
@@ -52,14 +52,15 @@ ENDIF()
SET_SOURCE_FILES_PROPERTIES(IfcPython.i PROPERTIES CPLUSPLUS ON) SET_SOURCE_FILES_PROPERTIES(IfcPython.i PROPERTIES CPLUSPLUS ON)
SWIG_ADD_MODULE(ifcopenshell_wrapper python IfcPython.i) SWIG_ADD_MODULE(ifcopenshell_wrapper python IfcPython.i)
SWIG_LINK_LIBRARIES(ifcopenshell_wrapper IfcParse IfcGeom ${PYTHON_LIBRARIES} ${OPENCASCADE_LIBRARIES} ${ICU_LIBRARIES}) SWIG_LINK_LIBRARIES(ifcopenshell_wrapper ${IFCLIBS} ${PYTHON_LIBRARIES} ${OPENCASCADE_LIBRARIES} ${ICU_LIBRARIES})
SET_INSTALL_RPATHS(${SWIG_MODULE_ifcopenshell_wrapper_REAL_NAME} "${IFCDIRS};${OCC_LIBRARY_DIR};${ICU_LIBRARY_DIR}")
# Try to find the Python interpreter to get the site-packages # Try to find the Python interpreter to get the site-packages
# directory in which the wrapper can be installed. # directory in which the wrapper can be installed.
FIND_PACKAGE(PythonInterp) FIND_PACKAGE(PythonInterp)
IF(PYTHONINTERP_FOUND) IF(PYTHONINTERP_FOUND)
EXECUTE_PROCESS( EXECUTE_PROCESS(
COMMAND ${PYTHON_EXECUTABLE} -c "import sys; from distutils.sysconfig import get_python_lib; sys.stdout.write(get_python_lib())" COMMAND ${PYTHON_EXECUTABLE} -c "import sys; from distutils.sysconfig import get_python_lib; sys.stdout.write(get_python_lib(1))"
OUTPUT_VARIABLE python_package_dir OUTPUT_VARIABLE python_package_dir
) )
+1
View File
@@ -387,6 +387,7 @@ struct ShapeRTTI : public boost::static_visitor<PyObject*>
throw IfcParse::IfcException("Invalid additional representation specified"); throw IfcParse::IfcException("Invalid additional representation specified");
} }
} }
return boost::variant<IfcGeom::Element<double>*, IfcGeom::Representation::Representation*>();
} }
%} %}
+1 -1
View File
@@ -52,4 +52,4 @@ QT_WRAP_CPP(QTviewer QTviewer_SRCS ${QTviewer_MOC_SRCS})
ADD_EXECUTABLE( 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 #http://www.qtcentre.org/wiki/index.php?title=Compiling_Qt4_apps_with_CMake
TARGET_LINK_libRARIES (QTviewer IfcParse IfcGeom ${QT_LIBRARIES} ${OPENCASCADE_LIBRARIES}) TARGET_LINK_LIBRARIES (QTviewer ${IFCLIBS} ${QT_LIBRARIES} ${OPENCASCADE_LIBRARIES})