Skip to content

Commit 5a0f8d3

Browse files
committed
cmake - install headers using PUBLIC_HEADER, deprecate INCLUDEDIR
1 parent 99835fc commit 5a0f8d3

File tree

7 files changed

+40
-43
lines changed

7 files changed

+40
-43
lines changed

cmake/CMakeLists.txt

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -170,14 +170,6 @@ endif()
170170

171171
include(GNUInstallDirs)
172172

173-
if(NOT INCLUDEDIR)
174-
set(INCLUDEDIR include)
175-
endif()
176-
if(NOT IS_ABSOLUTE ${INCLUDEDIR})
177-
set(INCLUDEDIR ${CMAKE_INSTALL_INCLUDEDIR})
178-
endif()
179-
message(STATUS "INCLUDEDIR: ${INCLUDEDIR}")
180-
181173
set(IFCOPENSHELL_EXPORT_TARGETS "${PROJECT_NAME}Targets")
182174

183175
# On Windows Release and Debug binaries are not compatible.

src/ifcgeom/CMakeLists.txt

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,13 @@ file(GLOB SCHEMA_AGNOSTIC_CPP_FILES *.cpp)
1414
set(SCHEMA_AGNOSTIC_FILES ${SCHEMA_AGNOSTIC_H_FILES} ${SCHEMA_AGNOSTIC_CPP_FILES})
1515

1616
add_library(IfcGeom ${SCHEMA_AGNOSTIC_FILES})
17-
set_target_properties(IfcGeom PROPERTIES COMPILE_FLAGS -DIFC_GEOM_EXPORTS VERSION "${PROJECT_VERSION}" SOVERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}")
17+
set_target_properties(IfcGeom
18+
PROPERTIES
19+
COMPILE_FLAGS -DIFC_GEOM_EXPORTS
20+
VERSION "${PROJECT_VERSION}"
21+
SOVERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}"
22+
PUBLIC_HEADER "${SCHEMA_AGNOSTIC_H_FILES}"
23+
)
1824

1925
if(UNIX)
2026
find_package(Threads)
@@ -33,7 +39,5 @@ endif()
3339

3440
install(TARGETS IfcGeom
3541
EXPORT ${IFCOPENSHELL_EXPORT_TARGETS}
36-
)
37-
install(FILES ${SCHEMA_AGNOSTIC_H_FILES}
38-
DESTINATION ${INCLUDEDIR}/ifcgeom
42+
PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/ifcgeom"
3943
)
Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,19 @@
11
add_subdirectory(schema)
22

33
add_library(geometry_serializer STATIC Serialization.cpp)
4-
set_target_properties(geometry_serializer PROPERTIES COMPILE_FLAGS "-DIFC_GEOMSERIALIZATION_EXPORTS")
4+
file(GLOB IFCGEOM_SERIALIZATION_H_FILE *.h)
5+
6+
set_target_properties(geometry_serializer PROPERTIES
7+
COMPILE_FLAGS "-DIFC_GEOMSERIALIZATION_EXPORTS"
8+
PUBLIC_HEADER "${IFCGEOM_SERIALIZATION_H_FILE}"
9+
)
510
target_link_libraries(geometry_serializer ${geometry_serializer_libraries} IfcParse)
611
set(IFCOPENSHELL_LIBRARIES ${IFCOPENSHELL_LIBRARIES} "geometry_serializer" ${geometry_serializer_libraries})
712
set(IFCOPENSHELL_LIBRARIES ${IFCOPENSHELL_LIBRARIES} PARENT_SCOPE)
813

9-
file(GLOB IFCGEOM_SERIALIZATION_H_FILE *.h)
10-
install(FILES ${IFCGEOM_SERIALIZATION_H_FILE}
11-
DESTINATION ${INCLUDEDIR}/ifcgeom/Serialization
12-
)
13-
1414
install(TARGETS geometry_serializer ${geometry_serializer_libraries}
1515
EXPORT ${IFCOPENSHELL_EXPORT_TARGETS}
16+
PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/ifcgeom/Serialization"
1617
)
1718

1819
set(geometry_serializer_libraries ${geometry_serializer_libraries} PARENT_SCOPE)

src/ifcgeom/kernels/CMakeLists.txt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,15 @@ foreach(kernel ${GEOMETRY_KERNELS})
99
set(KERNEL_TARGET "geometry_kernel_${kernel}")
1010

1111
add_library(${KERNEL_TARGET} OBJECT ${IFCGEOM_FILES})
12-
set_property(TARGET ${KERNEL_TARGET} APPEND PROPERTY COMPILE_FLAGS "-DIFC_GEOM_EXPORTS")
12+
set_target_properties(${KERNEL_TARGET} PROPERTIES
13+
COMPILE_FLAGS "-DIFC_GEOM_EXPORTS"
14+
PUBLIC_HEADER "${IFCGEOM_H_FILES}"
15+
)
1316
list(APPEND kernel_libraries ${KERNEL_TARGET})
1417
target_link_libraries(${KERNEL_TARGET} ${${KERNEL_UPPER}_LIBRARIES} Eigen3::Eigen)
1518
install(TARGETS ${KERNEL_TARGET}
1619
EXPORT ${IFCOPENSHELL_EXPORT_TARGETS}
20+
PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/ifcgeom/kernels/${kernel}"
1721
)
1822

1923
if(${kernel} STREQUAL "cgal")
@@ -33,10 +37,6 @@ foreach(kernel ${GEOMETRY_KERNELS})
3337
elseif(${kernel} STREQUAL "opencascade")
3438
target_link_libraries(${KERNEL_TARGET} ${OpenCASCADE_LIBRARIES})
3539
endif()
36-
37-
install(FILES ${IFCGEOM_H_FILES}
38-
DESTINATION ${INCLUDEDIR}/ifcgeom/kernels/${kernel}
39-
)
4040
endforeach()
4141

4242
set(kernel_libraries ${kernel_libraries} PARENT_SCOPE)

src/ifcparse/CMakeLists.txt

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,13 @@ endforeach()
3131
set(IFCPARSE_FILES ${IFCPARSE_CPP_FILES} ${IFCPARSE_H_FILES})
3232

3333
add_library(IfcParse ${IFCPARSE_FILES})
34-
set_target_properties(IfcParse PROPERTIES COMPILE_FLAGS -DIFC_PARSE_EXPORTS VERSION "${PROJECT_VERSION}" SOVERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}")
34+
set_target_properties(IfcParse
35+
PROPERTIES
36+
COMPILE_FLAGS -DIFC_PARSE_EXPORTS
37+
VERSION "${PROJECT_VERSION}"
38+
SOVERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}"
39+
PUBLIC_HEADER "${IFCPARSE_H_FILES}"
40+
)
3541

3642
if(IFCXML_SUPPORT)
3743
find_package(LibXml2 REQUIRED)
@@ -47,11 +53,8 @@ else()
4753
target_link_libraries(IfcParse ${Boost_LIBRARIES} ${BCRYPT_LIBRARIES})
4854
endif()
4955

50-
# CMake installation targets
51-
install(FILES ${IFCPARSE_H_FILES}
52-
DESTINATION ${INCLUDEDIR}/ifcparse
53-
)
5456

5557
install(TARGETS IfcParse
5658
EXPORT ${IFCOPENSHELL_EXPORT_TARGETS}
59+
PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/ifcparse"
5760
)

src/serializers/CMakeLists.txt

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,11 @@ file(GLOB SERIALIZERS_CPP_FILES *.cpp)
55
set(SERIALIZERS_FILES ${SERIALIZERS_H_FILES} ${SERIALIZERS_CPP_FILES})
66

77
add_library(Serializers ${SERIALIZERS_FILES})
8-
set_target_properties(Serializers PROPERTIES COMPILE_FLAGS "-DSERIALIZERS_EXPORTS" VERSION "${PROJECT_VERSION}" SOVERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}")
8+
set_target_properties(Serializers PROPERTIES
9+
COMPILE_FLAGS "-DSERIALIZERS_EXPORTS"
10+
VERSION "${PROJECT_VERSION}"
11+
SOVERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}"
12+
)
913
set(SERIALIZER_SCHEMA_LIBRARIES Serializers ${SERIALIZER_SCHEMA_LIBRARIES} PARENT_SCOPE)
1014

1115
if(WITH_PROJ)
@@ -25,10 +29,10 @@ target_link_libraries(Serializers
2529

2630
install(TARGETS Serializers)
2731

32+
# Can't use `PUBLIC_HEADER` since we need two folders.
2833
install(FILES ${SERIALIZERS_H_FILES}
29-
DESTINATION ${INCLUDEDIR}/serializers/
34+
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/serializers/"
3035
)
31-
3236
install(FILES ${SERIALIZERS_S_H_FILES}
33-
DESTINATION ${INCLUDEDIR}/serializers/schema_dependent
37+
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/serializers/schema_dependent"
3438
)

src/svgfill/CMakeLists.txt

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,6 @@ if(POLICY CMP0167) # 3.30 find_package(Boost) to use BoostConfig instead of Find
1010
cmake_policy(SET CMP0167 OLD)
1111
endif()
1212

13-
include(GNUInstallDirs)
14-
15-
16-
if(NOT INCLUDEDIR)
17-
set(INCLUDEDIR include)
18-
endif()
19-
if(NOT IS_ABSOLUTE ${INCLUDEDIR})
20-
set(INCLUDEDIR ${CMAKE_INSTALL_INCLUDEDIR})
21-
endif()
22-
message(STATUS "INCLUDEDIR: ${INCLUDEDIR}")
2313

2414
if(WIN32 AND NOT DEFINED ENV{CONDA_BUILD})
2515
set(Boost_USE_STATIC_LIBS ON)
@@ -57,6 +47,9 @@ file(GLOB LIB_CPP_FILES src/svgfill.cpp src/arrange_polygons.cpp)
5747
set(LIB_SRC_FILES ${LIB_H_FILES} ${LIB_CPP_FILES})
5848
add_library(svgfill ${LIB_SRC_FILES})
5949
target_link_libraries(svgfill ${Boost_LIBRARIES} ${BCRYPT_LIBRARIES} LibXml2::LibXml2 CGAL::CGAL_INTERFACE)
50+
set_target_properties(svgfill PROPERTIES
51+
PUBLIC_HEADER "${LIB_H_FILES}"
52+
)
6053

6154
add_executable(svgfill_exe src/main.cpp)
6255
target_link_libraries(svgfill_exe svgfill)
@@ -74,5 +67,5 @@ endif()
7467

7568
install(TARGETS svgfill_exe svgfill
7669
EXPORT ${IFCOPENSHELL_EXPORT_TARGETS}
70+
PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/svgfill"
7771
)
78-
install(FILES ${LIB_H_FILES} DESTINATION ${INCLUDEDIR})

0 commit comments

Comments
 (0)