diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 0947a74b01..424c1c88e7 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -170,14 +170,6 @@ endif() include(GNUInstallDirs) -if(NOT INCLUDEDIR) - set(INCLUDEDIR include) -endif() -if(NOT IS_ABSOLUTE ${INCLUDEDIR}) - set(INCLUDEDIR ${CMAKE_INSTALL_INCLUDEDIR}) -endif() -message(STATUS "INCLUDEDIR: ${INCLUDEDIR}") - set(IFCOPENSHELL_EXPORT_TARGETS "${PROJECT_NAME}Targets") # On Windows Release and Debug binaries are not compatible. diff --git a/src/ifcgeom/CMakeLists.txt b/src/ifcgeom/CMakeLists.txt index ff839663ea..a7a6fac6a9 100644 --- a/src/ifcgeom/CMakeLists.txt +++ b/src/ifcgeom/CMakeLists.txt @@ -14,7 +14,13 @@ file(GLOB SCHEMA_AGNOSTIC_CPP_FILES *.cpp) set(SCHEMA_AGNOSTIC_FILES ${SCHEMA_AGNOSTIC_H_FILES} ${SCHEMA_AGNOSTIC_CPP_FILES}) add_library(IfcGeom ${SCHEMA_AGNOSTIC_FILES}) -set_target_properties(IfcGeom PROPERTIES COMPILE_FLAGS -DIFC_GEOM_EXPORTS VERSION "${PROJECT_VERSION}" SOVERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}") +set_target_properties(IfcGeom + PROPERTIES + COMPILE_FLAGS -DIFC_GEOM_EXPORTS + VERSION "${PROJECT_VERSION}" + SOVERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}" + PUBLIC_HEADER "${SCHEMA_AGNOSTIC_H_FILES}" +) if(UNIX) find_package(Threads) @@ -33,7 +39,5 @@ endif() install(TARGETS IfcGeom EXPORT ${IFCOPENSHELL_EXPORT_TARGETS} -) -install(FILES ${SCHEMA_AGNOSTIC_H_FILES} - DESTINATION ${INCLUDEDIR}/ifcgeom + PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/ifcgeom" ) diff --git a/src/ifcgeom/Serialization/CMakeLists.txt b/src/ifcgeom/Serialization/CMakeLists.txt index 84920be5c2..ae3331a2f8 100644 --- a/src/ifcgeom/Serialization/CMakeLists.txt +++ b/src/ifcgeom/Serialization/CMakeLists.txt @@ -1,18 +1,19 @@ add_subdirectory(schema) add_library(geometry_serializer STATIC Serialization.cpp) -set_target_properties(geometry_serializer PROPERTIES COMPILE_FLAGS "-DIFC_GEOMSERIALIZATION_EXPORTS") +file(GLOB IFCGEOM_SERIALIZATION_H_FILE *.h) + +set_target_properties(geometry_serializer PROPERTIES + COMPILE_FLAGS "-DIFC_GEOMSERIALIZATION_EXPORTS" + PUBLIC_HEADER "${IFCGEOM_SERIALIZATION_H_FILE}" +) target_link_libraries(geometry_serializer ${geometry_serializer_libraries} IfcParse) set(IFCOPENSHELL_LIBRARIES ${IFCOPENSHELL_LIBRARIES} "geometry_serializer" ${geometry_serializer_libraries}) set(IFCOPENSHELL_LIBRARIES ${IFCOPENSHELL_LIBRARIES} PARENT_SCOPE) -file(GLOB IFCGEOM_SERIALIZATION_H_FILE *.h) -install(FILES ${IFCGEOM_SERIALIZATION_H_FILE} - DESTINATION ${INCLUDEDIR}/ifcgeom/Serialization -) - install(TARGETS geometry_serializer ${geometry_serializer_libraries} EXPORT ${IFCOPENSHELL_EXPORT_TARGETS} + PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/ifcgeom/Serialization" ) set(geometry_serializer_libraries ${geometry_serializer_libraries} PARENT_SCOPE) diff --git a/src/ifcgeom/kernels/CMakeLists.txt b/src/ifcgeom/kernels/CMakeLists.txt index 5b5aedc781..604db5ce9b 100644 --- a/src/ifcgeom/kernels/CMakeLists.txt +++ b/src/ifcgeom/kernels/CMakeLists.txt @@ -9,11 +9,15 @@ foreach(kernel ${GEOMETRY_KERNELS}) set(KERNEL_TARGET "geometry_kernel_${kernel}") add_library(${KERNEL_TARGET} OBJECT ${IFCGEOM_FILES}) - set_property(TARGET ${KERNEL_TARGET} APPEND PROPERTY COMPILE_FLAGS "-DIFC_GEOM_EXPORTS") + set_target_properties(${KERNEL_TARGET} PROPERTIES + COMPILE_FLAGS "-DIFC_GEOM_EXPORTS" + PUBLIC_HEADER "${IFCGEOM_H_FILES}" + ) list(APPEND kernel_libraries ${KERNEL_TARGET}) target_link_libraries(${KERNEL_TARGET} ${${KERNEL_UPPER}_LIBRARIES} Eigen3::Eigen) install(TARGETS ${KERNEL_TARGET} EXPORT ${IFCOPENSHELL_EXPORT_TARGETS} + PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/ifcgeom/kernels/${kernel}" ) if(${kernel} STREQUAL "cgal") @@ -33,10 +37,6 @@ foreach(kernel ${GEOMETRY_KERNELS}) elseif(${kernel} STREQUAL "opencascade") target_link_libraries(${KERNEL_TARGET} ${OpenCASCADE_LIBRARIES}) endif() - - install(FILES ${IFCGEOM_H_FILES} - DESTINATION ${INCLUDEDIR}/ifcgeom/kernels/${kernel} - ) endforeach() set(kernel_libraries ${kernel_libraries} PARENT_SCOPE) diff --git a/src/ifcparse/CMakeLists.txt b/src/ifcparse/CMakeLists.txt index ba99329601..5f29bbd812 100644 --- a/src/ifcparse/CMakeLists.txt +++ b/src/ifcparse/CMakeLists.txt @@ -31,7 +31,13 @@ endforeach() set(IFCPARSE_FILES ${IFCPARSE_CPP_FILES} ${IFCPARSE_H_FILES}) add_library(IfcParse ${IFCPARSE_FILES}) -set_target_properties(IfcParse PROPERTIES COMPILE_FLAGS -DIFC_PARSE_EXPORTS VERSION "${PROJECT_VERSION}" SOVERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}") +set_target_properties(IfcParse + PROPERTIES + COMPILE_FLAGS -DIFC_PARSE_EXPORTS + VERSION "${PROJECT_VERSION}" + SOVERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}" + PUBLIC_HEADER "${IFCPARSE_H_FILES}" +) if(IFCXML_SUPPORT) find_package(LibXml2 REQUIRED) @@ -47,11 +53,8 @@ else() target_link_libraries(IfcParse ${Boost_LIBRARIES} ${BCRYPT_LIBRARIES}) endif() -# CMake installation targets -install(FILES ${IFCPARSE_H_FILES} - DESTINATION ${INCLUDEDIR}/ifcparse -) install(TARGETS IfcParse EXPORT ${IFCOPENSHELL_EXPORT_TARGETS} + PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/ifcparse" ) diff --git a/src/serializers/CMakeLists.txt b/src/serializers/CMakeLists.txt index 5d70971f92..c6632451c7 100644 --- a/src/serializers/CMakeLists.txt +++ b/src/serializers/CMakeLists.txt @@ -5,7 +5,11 @@ file(GLOB SERIALIZERS_CPP_FILES *.cpp) set(SERIALIZERS_FILES ${SERIALIZERS_H_FILES} ${SERIALIZERS_CPP_FILES}) add_library(Serializers ${SERIALIZERS_FILES}) -set_target_properties(Serializers PROPERTIES COMPILE_FLAGS "-DSERIALIZERS_EXPORTS" VERSION "${PROJECT_VERSION}" SOVERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}") +set_target_properties(Serializers PROPERTIES + COMPILE_FLAGS "-DSERIALIZERS_EXPORTS" + VERSION "${PROJECT_VERSION}" + SOVERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}" +) set(SERIALIZER_SCHEMA_LIBRARIES Serializers ${SERIALIZER_SCHEMA_LIBRARIES} PARENT_SCOPE) if(WITH_PROJ) @@ -25,10 +29,10 @@ target_link_libraries(Serializers install(TARGETS Serializers) +# Can't use `PUBLIC_HEADER` since we need two folders. install(FILES ${SERIALIZERS_H_FILES} - DESTINATION ${INCLUDEDIR}/serializers/ + DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/serializers/" ) - install(FILES ${SERIALIZERS_S_H_FILES} - DESTINATION ${INCLUDEDIR}/serializers/schema_dependent + DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/serializers/schema_dependent" ) diff --git a/src/svgfill/CMakeLists.txt b/src/svgfill/CMakeLists.txt index 6da19bc586..949960e65d 100644 --- a/src/svgfill/CMakeLists.txt +++ b/src/svgfill/CMakeLists.txt @@ -10,16 +10,6 @@ if(POLICY CMP0167) # 3.30 find_package(Boost) to use BoostConfig instead of Find cmake_policy(SET CMP0167 OLD) endif() -include(GNUInstallDirs) - - -if(NOT INCLUDEDIR) - set(INCLUDEDIR include) -endif() -if(NOT IS_ABSOLUTE ${INCLUDEDIR}) - set(INCLUDEDIR ${CMAKE_INSTALL_INCLUDEDIR}) -endif() -message(STATUS "INCLUDEDIR: ${INCLUDEDIR}") if(WIN32 AND NOT DEFINED ENV{CONDA_BUILD}) set(Boost_USE_STATIC_LIBS ON) @@ -57,6 +47,9 @@ file(GLOB LIB_CPP_FILES src/svgfill.cpp src/arrange_polygons.cpp) set(LIB_SRC_FILES ${LIB_H_FILES} ${LIB_CPP_FILES}) add_library(svgfill ${LIB_SRC_FILES}) target_link_libraries(svgfill ${Boost_LIBRARIES} ${BCRYPT_LIBRARIES} LibXml2::LibXml2 CGAL::CGAL_INTERFACE) +set_target_properties(svgfill PROPERTIES + PUBLIC_HEADER "${LIB_H_FILES}" +) add_executable(svgfill_exe src/main.cpp) target_link_libraries(svgfill_exe svgfill) @@ -74,5 +67,5 @@ endif() install(TARGETS svgfill_exe svgfill EXPORT ${IFCOPENSHELL_EXPORT_TARGETS} + PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/svgfill" ) -install(FILES ${LIB_H_FILES} DESTINATION ${INCLUDEDIR})