################################################################################ # # # 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 . # # # ################################################################################ # Thils file can also be build standalone, outside of the IfcOpenShell build tree, # to demonstrate the usage IfcOpenShell as a cmake package. if(NOT BUILD_EXAMPLES) set(STANDALONE_PROJECT ON) endif() if(STANDALONE_PROJECT) cmake_minimum_required(VERSION 3.21) project(IfcOpenShellExamples) set(CMAKE_CXX_STANDARD 17) find_package(IfcOpenShell CONFIG REQUIRED) set(SCHEMA_VERSIONS ${IFCOPENSHELL_SCHEMA_VERSIONS}) set(WITH_OPENCASCADE ${IFCOPENSHELL_WITH_OPENCASCADE}) else() include_directories("${CMAKE_SOURCE_DIR}/../src") endif() macro(build_example exe_name) set (additional_targets ${ARGN}) add_executable(${exe_name} ${exe_name}.cpp) if(STANDALONE_PROJECT) target_link_libraries(${exe_name} IfcOpenShell::IfcParse $<$:IfcOpenShell::${additional_targets}>) else() target_include_directories(${exe_name} PRIVATE "${CMAKE_SOURCE_DIR}/../src") target_link_libraries(${exe_name} IfcParse ${additional_targets}) set_target_properties(${exe_name} PROPERTIES FOLDER Examples) endif() install(TARGETS ${exe_name}) endmacro() if("4" IN_LIST SCHEMA_VERSIONS) build_example(arbitrary_open_profile_def) build_example(triangulated_faceset) endif() if("2x3" IN_LIST SCHEMA_VERSIONS) build_example(composite_profile_def) build_example(csg_primitive) build_example(ellipse_pies) build_example(faces) build_example(ifc_curve_rebar) build_example(profiles) build_example(IfcParseExamples) if(WITH_OPENCASCADE) build_example(IfcOpenHouse geometry_serializer) build_example(IfcAdvancedHouse geometry_serializer) endif() endif() if("4x3_add2" IN_LIST SCHEMA_VERSIONS) build_example(IfcAlignment) build_example(IfcSimplifiedAlignment) endif()