|
1 | 1 | cmake_minimum_required (VERSION 3.6...3.9) |
2 | | -project(IfcPlusPlus) |
| 2 | +project(IfcPlusPlus LANGUAGES CXX) |
3 | 3 |
|
4 | | -ADD_DEFINITIONS(-DIFCQUERY_STATIC_LIB) |
| 4 | +ADD_DEFINITIONS(-DIFCQUERY_LIB) |
5 | 5 | ADD_DEFINITIONS(-D_HAS_AUTO_PTR_ETC=1) |
6 | 6 | ADD_DEFINITIONS(-DUNICODE) |
7 | 7 | ADD_DEFINITIONS(-D_UNICODE) |
8 | 8 | set(CMAKE_CXX_STANDARD 17) |
9 | | -set(CMAKE_CXX_STANDARD C++17) |
10 | 9 | set(CMAKE_CXX_STANDARD_REQUIRED ON) |
11 | 10 |
|
12 | 11 | if(WIN32) |
@@ -75,9 +74,14 @@ if (MSVC) |
75 | 74 | set_source_files_properties(src/ifcpp/IFC4X3/TypeFactory.cpp PROPERTIES COMPILE_FLAGS /bigobj) |
76 | 75 | endif() |
77 | 76 |
|
78 | | -add_library(IfcPlusPlus STATIC ${IFCPP_SOURCE_FILES}) |
| 77 | +add_library(IfcPlusPlus ${IFCPP_SOURCE_FILES}) |
| 78 | + |
| 79 | +if(NOT BUILD_SHARED_LIBS) |
| 80 | + target_compile_definitions(IfcPlusPlus PUBLIC IFCQUERY_STATIC_LIB) |
| 81 | +endif() |
79 | 82 |
|
80 | 83 | TARGET_INCLUDE_DIRECTORIES(IfcPlusPlus |
| 84 | + PUBLIC "$<INSTALL_INTERFACE:include;include/ifcpp/IFC4X3/include;include/ifcpp/external>" |
81 | 85 | PRIVATE |
82 | 86 | ${CMAKE_CURRENT_SOURCE_DIR}/src |
83 | 87 | ${IFCPP_SOURCE_DIR}/IfcPlusPlus/src |
@@ -107,24 +111,32 @@ install( |
107 | 111 | DESTINATION include |
108 | 112 | FILES_MATCHING PATTERN "*.h" |
109 | 113 | ) |
| 114 | + |
| 115 | +# Install cmake config |
| 116 | + |
| 117 | +set(IFCPP_CONFIG_DIR "share/IFCPP") |
| 118 | + |
110 | 119 | install( |
111 | 120 | TARGETS IfcPlusPlus |
112 | | - EXPORT IfcPlusPlus |
| 121 | + EXPORT IFCPPTargets |
113 | 122 | RUNTIME DESTINATION bin |
114 | | - LIBRARY DESTINATION bin |
115 | | - ARCHIVE DESTINATION bin |
| 123 | + LIBRARY DESTINATION lib |
| 124 | + ARCHIVE DESTINATION lib |
116 | 125 | ) |
117 | 126 |
|
118 | | -set(target_output_filename IfcPlusPlus-targets.cmake) |
119 | | -set(target_output "${CMAKE_BINARY_DIR}/cmake/${target_output_filename}") |
120 | | - |
121 | | -export( |
122 | | - EXPORT IfcPlusPlus |
123 | | - FILE ${target_output} |
124 | | - NAMESPACE IFCPP::) |
| 127 | +install( |
| 128 | + EXPORT IFCPPTargets |
| 129 | + DESTINATION "${IFCPP_CONFIG_DIR}" |
| 130 | + NAMESPACE IFCPP:: |
| 131 | +) |
125 | 132 |
|
| 133 | +include(CMakePackageConfigHelpers) |
| 134 | +configure_package_config_file( |
| 135 | + "${CMAKE_CURRENT_SOURCE_DIR}/IFCPPConfig.cmake.in" |
| 136 | + "${CMAKE_CURRENT_BINARY_DIR}/IFCPPConfig.cmake" |
| 137 | + INSTALL_DESTINATION "${IFCPP_CONFIG_DIR}" |
| 138 | +) |
126 | 139 | install( |
127 | | - EXPORT IfcPlusPlus |
128 | | - DESTINATION ${IFCPP_CONFIG_DIR} |
129 | | - FILE ${target_output_filename} |
130 | | - NAMESPACE IFCPP::) |
| 140 | + FILES "${CMAKE_CURRENT_BINARY_DIR}/IFCPPConfig.cmake" |
| 141 | + DESTINATION "${IFCPP_CONFIG_DIR}" |
| 142 | +) |
0 commit comments