Skip to content

Commit 7e29f5b

Browse files
committed
switch to IFC4X3
1 parent 8ec83ef commit 7e29f5b

File tree

5,549 files changed

+271502
-186015
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

5,549 files changed

+271502
-186015
lines changed

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,4 +43,4 @@ examples/LoadFileExampleNoGUI/LoadFileExampleNoGUI/x64/
4343
external/Carve/build/
4444
examples/CreateWallAndWriteFile/x64/
4545
examples/LoadFileWithGeometryExampleConsole/dump_mesh_debug.txt
46-
46+
IfcPlusPlus-*

Build IFC++.pdf

-22.5 KB
Binary file not shown.

CMakeLists.txt

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,28 @@
11
CMAKE_MINIMUM_REQUIRED (VERSION 3.7.2)
2+
project(IfcPlusPlus)
23

34
# Set a default build type if none was specified https://blog.kitware.com/cmake-and-the-default-build-type/
45
set(default_build_type "Release")
56

67
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
7-
message(STATUS "Setting build type to '${default_build_type}' as none was specified.")
8-
set(CMAKE_BUILD_TYPE "${default_build_type}" CACHE
9-
STRING "Choose the type of build." FORCE)
10-
# Set the possible values of build type for cmake-gui
11-
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS
12-
"Debug" "Release" "MinSizeRel" "RelWithDebInfo")
8+
message(STATUS "Setting build type to '${default_build_type}' as none was specified.")
9+
10+
set(CMAKE_BUILD_TYPE "${default_build_type}" CACHE STRING "Choose the type of build." FORCE)
11+
12+
# Set the possible values of build type for cmake-gui
13+
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo")
1314
endif()
1415
message(STATUS "Build type: ${CMAKE_BUILD_TYPE}")
1516

1617
project(IFCPP)
1718
message(STATUS "------------------------------------------------------------------------")
1819

1920
option(BUILD_CONSOLE_APPLICATION "Build an example CLI application" ON)
20-
option(BUILD_VIEWER_APPLICATION "Build the viewer example application" ON)
21+
if (WIN32)
22+
option(BUILD_VIEWER_APPLICATION "Build the viewer example application" ON)
23+
else(NOT WIN32)
24+
option(BUILD_VIEWER_APPLICATION "Build the viewer example application" OFF)
25+
endif()
2126
option(USE_OSG_DEBUG "Use openscenegraph debug library" OFF)
2227
option(BUILD_STATIC_LIBRARY "Build static library" OFF)
2328

@@ -34,6 +39,13 @@ ELSE(NOT WIN32)
3439
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP")
3540
ENDIF(NOT WIN32)
3641

42+
find_package(OpenMP)
43+
if (OPENMP_FOUND)
44+
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
45+
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
46+
set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}")
47+
endif()
48+
3749
set(CARVE_SOURCE_DIR ${IFCPP_SOURCE_DIR}/external/Carve)
3850
set(CARVE_BINARY_DIR ${IFCPP_BINARY_DIR})
3951
set(IFCPP_CONFIG_DIR "share/IFCPP/cmake")
@@ -57,6 +69,7 @@ INSTALL(
5769
IF(BUILD_CONSOLE_APPLICATION)
5870
ADD_SUBDIRECTORY (examples/CreateWallAndWriteFile)
5971
ADD_SUBDIRECTORY (examples/LoadFileExampleConsole)
72+
ADD_SUBDIRECTORY (examples/LoadFileWithGeometryExampleConsole)
6073
ENDIF()
6174
IF(BUILD_VIEWER_APPLICATION)
6275
ADD_SUBDIRECTORY (examples/SimpleViewerExampleQt)

IfcPlusPlus/CMakeLists.txt

Lines changed: 39 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
cmake_minimum_required (VERSION 2.8...3.7.2)
2+
project(IfcPlusPlus)
23

34
if(WIN32)
45
# for vs2017
@@ -16,67 +17,57 @@ else(WIN32)
1617
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE})
1718
endif(WIN32)
1819

19-
file (GLOB ifc4_source "src/ifcpp/IFC4/lib/*.cpp")
20-
21-
if(UNIX)
22-
# do not add src/external/XUnzip.cpp on unix platforms
23-
set(IFCPP_SOURCE_FILES
24-
src/ifcpp/IFC4/EntityFactory.cpp
25-
src/ifcpp/IFC4/TypeFactory.cpp
26-
src/ifcpp/model/BuildingGuid.cpp
27-
src/ifcpp/model/BuildingModel.cpp
28-
src/ifcpp/model/UnitConverter.cpp
29-
src/ifcpp/reader/AbstractReader.cpp
30-
src/ifcpp/reader/ReaderSTEP.cpp
31-
src/ifcpp/reader/ReaderXML.cpp
32-
src/ifcpp/reader/ReaderUtil.cpp
33-
src/ifcpp/writer/WriterSTEP.cpp
34-
src/ifcpp/writer/WriterUtil.cpp
35-
36-
${ifc4_source}
37-
)
38-
else(UNIX)
39-
set(IFCPP_SOURCE_FILES
40-
src/ifcpp/IFC4/EntityFactory.cpp
41-
src/ifcpp/IFC4/TypeFactory.cpp
42-
src/ifcpp/model/BuildingGuid.cpp
43-
src/ifcpp/model/BuildingModel.cpp
44-
src/ifcpp/model/UnitConverter.cpp
45-
src/ifcpp/reader/AbstractReader.cpp
46-
src/ifcpp/reader/ReaderSTEP.cpp
47-
src/ifcpp/reader/ReaderXML.cpp
48-
src/ifcpp/reader/ReaderUtil.cpp
49-
src/ifcpp/writer/WriterSTEP.cpp
50-
src/ifcpp/writer/WriterUtil.cpp
51-
src/external/XUnzip.cpp
52-
53-
${ifc4_source}
54-
)
55-
endif(UNIX)
56-
20+
set(IFCPP_SOURCE_FILES
21+
src/ifcpp/IFC4X3/EntityFactory.cpp
22+
src/ifcpp/IFC4X3/TypeFactory.cpp
23+
src/ifcpp/model/BuildingGuid.cpp
24+
src/ifcpp/model/BuildingModel.cpp
25+
src/ifcpp/model/UnitConverter.cpp
26+
src/ifcpp/reader/AbstractReader.cpp
27+
src/ifcpp/reader/ReaderSTEP.cpp
28+
src/ifcpp/reader/ReaderXML.cpp
29+
src/ifcpp/reader/ReaderUtil.cpp
30+
src/ifcpp/writer/WriterSTEP.cpp
31+
src/ifcpp/writer/WriterUtil.cpp
32+
)
5733

5834
if (MSVC)
35+
set(IFCPP_SOURCE_FILES
36+
src/external/XUnzip.cpp # do not add src/external/XUnzip.cpp on unix platforms
37+
${IFCPP_SOURCE_FILES})
5938
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /bigobj ")
6039
endif()
6140

62-
add_definitions(-DIFCQUERY_AS_DYNAMIC_LIBRARY)
63-
add_definitions(-DIFCQUERY_LIB)
41+
ADD_DEFINITIONS(-DIFCQUERY_AS_DYNAMIC_LIBRARY)
42+
ADD_DEFINITIONS(-DIFCQUERY_LIB)
43+
ADD_DEFINITIONS(-DGLM_FORCE_CTOR_INIT)
44+
ADD_DEFINITIONS(-DGLM_FORCE_XYZW_ONLY)
45+
ADD_DEFINITIONS(-D_HAS_AUTO_PTR_ETC=1)
46+
ADD_DEFINITIONS(-DUNICODE)
47+
ADD_DEFINITIONS(-D_UNICODE)
48+
set(CMAKE_CXX_STANDARD 20)
49+
set(CMAKE_CXX_STANDARD_REQUIRED ON)
50+
6451
add_library(IfcPlusPlus SHARED ${IFCPP_SOURCE_FILES})
6552

66-
link_directories( ${CMAKE_BINARY_DIR}/IfcPlusPlus/${CMAKE_BUILD_TYPE} )
67-
link_directories( ${CMAKE_BINARY_DIR}/external/Carve/${CMAKE_BUILD_TYPE} )
68-
target_link_libraries(IfcPlusPlus
69-
PUBLIC
70-
carve
71-
${VC_LIBS}
72-
)
53+
if(OpenMP_CXX_FOUND)
54+
ADD_DEFINITIONS(-DENABLE_OPENMP)
55+
TARGET_LINK_LIBRARIES(IfcPlusPlus
56+
optimized OpenMP::OpenMP_CXX
57+
${VC_LIBS})
58+
endif()
59+
7360

7461
target_include_directories(IfcPlusPlus
7562
PUBLIC
76-
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>"
63+
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>"
64+
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/external>"
65+
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/ifcpp/IFC4/include>"
66+
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/ifcpp/IFC4X3/include>"
7767
"$<INSTALL_INTERFACE:include>")
7868

7969
set_target_properties(IfcPlusPlus PROPERTIES DEBUG_POSTFIX "d")
70+
set_target_properties(IfcPlusPlus PROPERTIES CXX_STANDARD 20)
8071

8172
if(WIN32)
8273
set_target_properties(IfcPlusPlus PROPERTIES LINK_FLAGS_DEBUG "/debug /INCREMENTAL:NO")

0 commit comments

Comments
 (0)