| set(headeronly_headers headeronly/headeronly.h) |
| add_library(headeronly INTERFACE ${headeronly_headers}) |
| set_property(TARGET headeronly PROPERTY INTERFACE_INCLUDE_DIRECTORIES |
| "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/headeronly>" |
| "$<INSTALL_INTERFACE:${CMAKE_INSTALL_PREFIX}/include/headeronly>" |
| ) |
| set_property(TARGET headeronly PROPERTY INTERFACE_COMPILE_DEFINITIONS "HEADERONLY_DEFINE") |
| |
| add_custom_command(OUTPUT headergen/headergen.h |
| COMMAND ${CMAKE_COMMAND} -E copy |
| ${CMAKE_CURRENT_SOURCE_DIR}/headergen.h.in |
| ${CMAKE_CURRENT_BINARY_DIR}/headergen/headergen.h |
| DEPENDS |
| ${CMAKE_CURRENT_SOURCE_DIR}/headergen.h.in |
| VERBATIM) |
| |
| add_library(headergen INTERFACE headergen/headergen.h) |
| set_property(TARGET headergen PROPERTY INTERFACE_INCLUDE_DIRECTORIES |
| "$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/headergen>" |
| ) |
| set_property(TARGET headergen PROPERTY PUBLIC_HEADER |
| ${CMAKE_CURRENT_BINARY_DIR}/headergen/headergen.h) |
| |
| add_library(pch_iface INTERFACE) |
| target_precompile_headers(pch_iface INTERFACE |
| "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/pch/pch.h>" |
| "$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/include/pch/pch.h>" |
| ) |
| |
| include(GenerateExportHeader) |
| add_library(sharedlib SHARED sharedlib.cpp) |
| generate_export_header(sharedlib) |
| set_property(TARGET sharedlib PROPERTY INCLUDE_DIRECTORIES |
| "${CMAKE_CURRENT_SOURCE_DIR}/sharedlib" |
| "${CMAKE_CURRENT_BINARY_DIR}" |
| ) |
| set_property(TARGET sharedlib PROPERTY INTERFACE_INCLUDE_DIRECTORIES |
| "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/sharedlib;${CMAKE_CURRENT_BINARY_DIR}>" |
| "$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/include/sharedlib>" |
| ) |
| |
| set_property(TARGET sharedlib PROPERTY INTERFACE_COMPILE_DEFINITIONS "SHAREDLIB_DEFINE") |
| |
| add_library(sharediface INTERFACE) |
| target_link_libraries(sharediface INTERFACE sharedlib) |
| |
| add_library(use_auto_type INTERFACE) |
| target_compile_features(use_auto_type INTERFACE cxx_auto_type) |
| |
| add_library(use_c_restrict INTERFACE) |
| target_compile_features(use_c_restrict INTERFACE c_restrict) |
| |
| add_library(source_target INTERFACE) |
| target_sources(source_target INTERFACE |
| $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/source_target.cpp> |
| $<INSTALL_INTERFACE:$<INSTALL_PREFIX>/src/source_target_for_install.cpp> |
| ) |
| install(FILES |
| source_target_for_install.cpp |
| DESTINATION src |
| ) |
| |
| add_library(cmakeonly INTERFACE) |
| set_property(TARGET cmakeonly PROPERTY INTERFACE_COMPILE_DEFINITIONS [[DEF="\"\$\B"]]) |
| set_property(TARGET cmakeonly PROPERTY custom_property CustomPropertyValue) |
| set_property(TARGET cmakeonly PROPERTY EXPORT_PROPERTIES custom_property) |
| |
| install(TARGETS headeronly sharediface use_auto_type use_c_restrict source_target |
| pch_iface cmakeonly |
| EXPORT expInterface |
| ) |
| install(TARGETS headergen |
| EXPORT expInterface |
| PUBLIC_HEADER DESTINATION include/headergen |
| INCLUDES DESTINATION include/headergen |
| ) |
| install(TARGETS sharedlib |
| EXPORT expInterface |
| RUNTIME DESTINATION bin |
| LIBRARY DESTINATION lib NAMELINK_SKIP |
| ARCHIVE DESTINATION lib |
| FRAMEWORK DESTINATION Frameworks |
| BUNDLE DESTINATION Applications |
| ) |
| install(FILES |
| ${headeronly_headers} |
| DESTINATION include/headeronly |
| ) |
| install(FILES |
| pch/pch.h |
| DESTINATION include/pch |
| ) |
| install(FILES |
| sharedlib/sharedlib.h |
| "${CMAKE_CURRENT_BINARY_DIR}/sharedlib_export.h" |
| DESTINATION include/sharedlib |
| ) |
| |
| install(EXPORT expInterface NAMESPACE exp:: DESTINATION lib/exp) |
| |
| export(EXPORT expInterface |
| NAMESPACE bld:: |
| FILE ../ExportInterfaceBuildTree.cmake |
| ) |