1- cmake_minimum_required (VERSION 2.8 ...3.7.2 )
1+ cmake_minimum_required (VERSION 3.6 ...3.9 )
22project (IfcPlusPlus)
33
4+ ADD_DEFINITIONS (-DIFCQUERY_STATIC_LIB)
5+ ADD_DEFINITIONS (-DGLM_FORCE_CTOR_INIT)
6+ ADD_DEFINITIONS (-DGLM_FORCE_XYZW_ONLY)
7+ ADD_DEFINITIONS (-D_HAS_AUTO_PTR_ETC=1)
8+ ADD_DEFINITIONS (-DUNICODE)
9+ ADD_DEFINITIONS (-D_UNICODE)
10+ ADD_DEFINITIONS (-DTHRUST_DEVICE_SYSTEM=THRUST_DEVICE_SYSTEM_CPP)
11+ set (CMAKE_CXX_STANDARD 17)
12+ set (CMAKE_CXX_STANDARD C++17)
13+ set (CMAKE_CXX_STANDARD_REQUIRED ON )
14+
415if (WIN32 )
516 # for vs2017
617 set (VC_LIBS Bcrypt.lib)
@@ -23,32 +34,67 @@ set(IFCPP_SOURCE_FILES
2334 src/ifcpp/model/BuildingGuid.cpp
2435 src/ifcpp/model/BuildingModel.cpp
2536 src/ifcpp/model/UnitConverter.cpp
26- src/ifcpp/reader/AbstractReader.cpp
2737 src/ifcpp/reader/ReaderSTEP.cpp
28- src/ifcpp/reader/ReaderXML.cpp
2938 src/ifcpp/reader/ReaderUtil.cpp
3039 src/ifcpp/writer/WriterSTEP.cpp
3140 src/ifcpp/writer/WriterUtil.cpp
41+ src/external/manifold/src/boolean3.cpp
42+ src/external/manifold/src/boolean_result.cpp
43+ src/external/manifold/src/collider/src/collider.cpp
44+ src/external/manifold/src/constructors.cpp
45+ src/external/manifold/src/csg_tree.cpp
46+ src/external/manifold/src/edge_op.cpp
47+ src/external/manifold/src/face_op.cpp
48+ src/external/manifold/src/impl.cpp
49+ src/external/manifold/src/manifold.cpp
50+ src/external/manifold/src/polygon/src/polygon.cpp
51+ src/external/manifold/src/properties.cpp
52+ src/external/manifold/src/smoothing.cpp
53+ src/external/manifold/src/sort .cpp
54+ src/external/manifold/src/third_party/graphlite/src/connected_components.cpp
55+ src/external/manifold/src/utilities/src/detect_cuda.cpp
56+ src/external/Carve/src/lib/aabb.cpp
57+ src/external/Carve/src/lib/carve.cpp
58+ src/external/Carve/src/lib/convex_hull.cpp
59+ src/external/Carve/src/lib/csg.cpp
60+ src/external/Carve/src/lib/csg_collector.cpp
61+ src/external/Carve/src/lib/edge.cpp
62+ src/external/Carve/src/lib/face.cpp
63+ src/external/Carve/src/lib/geom.cpp
64+ src/external/Carve/src/lib/geom2d.cpp
65+ src/external/Carve/src/lib/geom3d.cpp
66+ src/external/Carve/src/lib/intersect.cpp
67+ src/external/Carve/src/lib/intersect_classify_edge.cpp
68+ src/external/Carve/src/lib/intersect_classify_group.cpp
69+ src/external/Carve/src/lib/intersect_debug.cpp
70+ src/external/Carve/src/lib/intersect_face_division.cpp
71+ src/external/Carve/src/lib/intersect_group.cpp
72+ src/external/Carve/src/lib/intersect_half_classify_group.cpp
73+ src/external/Carve/src/lib/intersection.cpp
74+ src/external/Carve/src/lib/math.cpp
75+ src/external/Carve/src/lib/mesh.cpp
76+ src/external/Carve/src/lib/octree.cpp
77+ src/external/Carve/src/lib/pointset.cpp
78+ src/external/Carve/src/lib/polyhedron.cpp
79+ src/external/Carve/src/lib/polyline.cpp
80+ src/external/Carve/src/lib/shewchuk_predicates.cpp
81+ src/external/Carve/src/lib/tag.cpp
82+ src/external/Carve/src/lib/timing.cpp
83+ src/external/Carve/src/lib/triangle_intersection.cpp
84+ src/external/Carve/src/lib/triangulator.cpp
85+ src/external/Carve/src/common/geometry.cpp
3286)
3387
3488if (MSVC )
3589 set (IFCPP_SOURCE_FILES
3690 src/external/XUnzip.cpp # do not add src/external/XUnzip.cpp on unix platforms
3791 ${IFCPP_SOURCE_FILES} )
38- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /bigobj " )
92+ #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /bigobj ")
93+ set_source_files_properties (src/ifcpp/IFC4X3/EntityFactory.cpp PROPERTIES COMPILE_FLAGS /bigobj)
94+ set_source_files_properties (src/ifcpp/IFC4X3/TypeFactory.cpp PROPERTIES COMPILE_FLAGS /bigobj)
3995endif ()
4096
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-
51- add_library (IfcPlusPlus SHARED ${IFCPP_SOURCE_FILES} )
97+ add_library (IfcPlusPlus STATIC ${IFCPP_SOURCE_FILES} )
5298
5399if (OpenMP_CXX_FOUND)
54100 ADD_DEFINITIONS (-DENABLE_OPENMP)
@@ -58,19 +104,38 @@ if(OpenMP_CXX_FOUND)
58104endif ()
59105
60106
61- target_include_directories (IfcPlusPlus
62- PUBLIC
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>"
67- "$<INSTALL_INTERFACE:include>" )
107+ TARGET_INCLUDE_DIRECTORIES (IfcPlusPlus
108+ PRIVATE
109+ ${CMAKE_CURRENT_SOURCE_DIR} /src
110+ ${IFCPP_SOURCE_DIR} /IfcPlusPlus/src
111+ ${IFCPP_SOURCE_DIR} /IfcPlusPlus/src/ifcpp/IFC4X3/include
112+ ${IFCPP_SOURCE_DIR} /IfcPlusPlus/src/external
113+ ${IFCPP_SOURCE_DIR} /IfcPlusPlus/src/external/glm
114+ ${IFCPP_SOURCE_DIR} /IfcPlusPlus/src/external/Carve/include
115+ ${IFCPP_SOURCE_DIR} /IfcPlusPlus/src/external/Carve/src
116+ ${IFCPP_SOURCE_DIR} /IfcPlusPlus/src/external/Carve/src/include
117+ ${IFCPP_SOURCE_DIR} /IfcPlusPlus/src/external/Carve/src/common
118+ ${IFCPP_SOURCE_DIR} /IfcPlusPlus/src/external/Carve/build /src
119+ ${IFCPP_SOURCE_DIR} /IfcPlusPlus/src/external/glm
120+ ${IFCPP_SOURCE_DIR} /IfcPlusPlus/src/external/manifold/src/utilities/include
121+ ${IFCPP_SOURCE_DIR} /IfcPlusPlus/src/external/manifold/src/utilities
122+ ${IFCPP_SOURCE_DIR} /IfcPlusPlus/src/external/manifold/src/polygon/include
123+ ${IFCPP_SOURCE_DIR} /IfcPlusPlus/src/external/manifold/src/manifold/include
124+ ${IFCPP_SOURCE_DIR} /IfcPlusPlus/src/external/manifold/src
125+ ${IFCPP_SOURCE_DIR} /IfcPlusPlus/src/external/manifold/src/collider/include
126+ ${IFCPP_SOURCE_DIR} /IfcPlusPlus/src/external/manifold/src/third_party
127+ ${IFCPP_SOURCE_DIR} /IfcPlusPlus/src/external/manifold/src/third_party/thrust
128+ ${IFCPP_SOURCE_DIR} /IfcPlusPlus/src/external/manifold/src/third_party/graphlite/include
129+ )
130+
68131
69132set_target_properties (IfcPlusPlus PROPERTIES DEBUG_POSTFIX "d" )
70- set_target_properties (IfcPlusPlus PROPERTIES CXX_STANDARD 20 )
133+ set_target_properties (IfcPlusPlus PROPERTIES CXX_STANDARD 17 )
71134
72135if (WIN32 )
73136 set_target_properties (IfcPlusPlus PROPERTIES LINK_FLAGS_DEBUG "/debug /INCREMENTAL:NO" )
137+ add_definitions ("/wd4018 /wd4305" )
138+ target_compile_options (IfcPlusPlus PRIVATE /W2)
74139endif ()
75140
76141install (
0 commit comments