Skip to content

Commit 95cb09a

Browse files
committed
[cmake] Export config properly
1 parent fd16427 commit 95cb09a

File tree

3 files changed

+35
-50
lines changed

3 files changed

+35
-50
lines changed

CMakeLists.txt

+2-32
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
CMAKE_MINIMUM_REQUIRED (VERSION 3.6)
2-
project(IfcPlusPlus)
2+
project(IFCPP LANGUAGES CXX)
33

44
# Set a default build type if none was specified https://blog.kitware.com/cmake-and-the-default-build-type/
55
set(default_build_type "Release")
@@ -12,9 +12,8 @@ if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
1212
# Set the possible values of build type for cmake-gui
1313
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo")
1414
endif()
15-
message(STATUS "Build type: ${CMAKE_BUILD_TYPE}")
1615

17-
project(IFCPP)
16+
message(STATUS "Build type: ${CMAKE_BUILD_TYPE}")
1817
message(STATUS "------------------------------------------------------------------------")
1918

2019
option(BUILD_CONSOLE_APPLICATION "Build an example CLI application" ON)
@@ -38,37 +37,8 @@ ELSE(NOT WIN32)
3837
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP")
3938
ENDIF(NOT WIN32)
4039

41-
set(IFCPP_CONFIG_DIR "share/IFCPP/cmake")
4240
ADD_SUBDIRECTORY (IfcPlusPlus)
4341

44-
# Install configuration file
45-
#INCLUDE(CMakePackageConfigHelpers)
46-
#set(config_file_input "${CMAKE_CURRENT_SOURCE_DIR}/cmake/IFCPPConfig.cmake.in")
47-
#set(config_file_output "${CMAKE_CURRENT_BINARY_DIR}/cmake/IFCPPConfig.cmake")
48-
49-
#CONFIGURE_PACKAGE_CONFIG_FILE(
50-
# ${config_file_input}
51-
# ${config_file_output}
52-
# INSTALL_DESTINATION ${IFCPP_CONFIG_DIR})
53-
54-
#INSTALL(
55-
# FILES ${config_file_output}
56-
# DESTINATION ${IFCPP_CONFIG_DIR})
57-
58-
#install(
59-
# DIRECTORY src/ifcpp
60-
# DESTINATION include
61-
# FILES_MATCHING PATTERN "*.h"
62-
#)
63-
64-
#install(
65-
# TARGETS IfcPlusPlus
66-
#EXPORT IfcPlusPlus
67-
# RUNTIME DESTINATION bin
68-
# LIBRARY DESTINATION bin
69-
# ARCHIVE DESTINATION bin
70-
#)
71-
7242
IF(BUILD_CONSOLE_APPLICATION)
7343
ADD_SUBDIRECTORY (examples/CreateIfcWallAndWriteFile)
7444
ADD_SUBDIRECTORY (examples/LoadFileExample)

IfcPlusPlus/CMakeLists.txt

+30-18
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
cmake_minimum_required (VERSION 3.6...3.9)
2-
project(IfcPlusPlus)
2+
project(IfcPlusPlus LANGUAGES CXX)
33

4-
ADD_DEFINITIONS(-DIFCQUERY_STATIC_LIB)
4+
ADD_DEFINITIONS(-DIFCQUERY_LIB)
55
ADD_DEFINITIONS(-D_HAS_AUTO_PTR_ETC=1)
66
ADD_DEFINITIONS(-DUNICODE)
77
ADD_DEFINITIONS(-D_UNICODE)
88
set(CMAKE_CXX_STANDARD 17)
9-
set(CMAKE_CXX_STANDARD C++17)
109
set(CMAKE_CXX_STANDARD_REQUIRED ON)
1110

1211
if(WIN32)
@@ -75,9 +74,14 @@ if (MSVC)
7574
set_source_files_properties(src/ifcpp/IFC4X3/TypeFactory.cpp PROPERTIES COMPILE_FLAGS /bigobj)
7675
endif()
7776

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()
7982

8083
TARGET_INCLUDE_DIRECTORIES(IfcPlusPlus
84+
PUBLIC "$<INSTALL_INTERFACE:include;include/ifcpp/IFC4X3/include;include/ifcpp/external>"
8185
PRIVATE
8286
${CMAKE_CURRENT_SOURCE_DIR}/src
8387
${IFCPP_SOURCE_DIR}/IfcPlusPlus/src
@@ -107,24 +111,32 @@ install(
107111
DESTINATION include
108112
FILES_MATCHING PATTERN "*.h"
109113
)
114+
115+
# Install cmake config
116+
117+
set(IFCPP_CONFIG_DIR "share/IFCPP")
118+
110119
install(
111120
TARGETS IfcPlusPlus
112-
EXPORT IfcPlusPlus
121+
EXPORT IFCPP-targets
113122
RUNTIME DESTINATION bin
114-
LIBRARY DESTINATION bin
115-
ARCHIVE DESTINATION bin
123+
LIBRARY DESTINATION lib
124+
ARCHIVE DESTINATION lib
116125
)
117126

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 IFCPP-targets
129+
DESTINATION "${IFCPP_CONFIG_DIR}"
130+
NAMESPACE IFCPP::
131+
)
125132

133+
include(CMakePackageConfigHelpers)
134+
configure_package_config_file(
135+
"${CMAKE_CURRENT_SOURCE_DIR}/IFCPP-config.cmake.in"
136+
"${CMAKE_CURRENT_BINARY_DIR}/IFCPP-config.cmake"
137+
INSTALL_DESTINATION "${IFCPP_CONFIG_DIR}"
138+
)
126139
install(
127-
EXPORT IfcPlusPlus
128-
DESTINATION ${IFCPP_CONFIG_DIR}
129-
FILE ${target_output_filename}
130-
NAMESPACE IFCPP::)
140+
FILES "${CMAKE_CURRENT_BINARY_DIR}/IFCPP-config.cmake"
141+
DESTINATION "${IFCPP_CONFIG_DIR}"
142+
)

IfcPlusPlus/IFCPP-config.cmake.in

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
@PACKAGE_INIT@
2+
3+
include("${CMAKE_CURRENT_LIST_DIR}/IFCPP-targets.cmake")

0 commit comments

Comments
 (0)