mirror of
https://github.com/fmtlib/fmt.git
synced 2026-07-30 16:26:27 +08:00
Simplify build-tree export and rename INSTALL_TARGETS
Rename INSTALL_TARGETS to FMT_TARGETS since the list is now used for both installation and the build-tree export, and move INSTALL_FILE_SET into the FMT_INSTALL block as only install(TARGETS) uses it. Replace the export-test static library and export-lib.cc with an INTERFACE library, which reproduces the same CMake export dependency check (#4806).
This commit is contained in:
parent
bcaa44d055
commit
4e5ff510f8
@ -442,13 +442,10 @@ set_target_properties(fmt-c PROPERTIES PUBLIC_HEADER include/fmt/fmt-c.h)
|
|||||||
|
|
||||||
# Install targets.
|
# Install targets.
|
||||||
set(targets_export_name fmt-targets)
|
set(targets_export_name fmt-targets)
|
||||||
set(INSTALL_TARGETS fmt fmt-header-only fmt-c)
|
set(FMT_TARGETS fmt fmt-header-only fmt-c)
|
||||||
|
|
||||||
if (FMT_MODULE)
|
if (FMT_MODULE)
|
||||||
list(APPEND INSTALL_TARGETS fmt-module)
|
list(APPEND FMT_TARGETS fmt-module)
|
||||||
if (FMT_USE_CMAKE_MODULES)
|
|
||||||
set(INSTALL_FILE_SET FILE_SET fmt DESTINATION ${FMT_INC_DIR}/fmt)
|
|
||||||
endif ()
|
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (FMT_INSTALL)
|
if (FMT_INSTALL)
|
||||||
@ -495,8 +492,11 @@ if (FMT_INSTALL)
|
|||||||
INSTALL_DESTINATION ${FMT_CMAKE_DIR})
|
INSTALL_DESTINATION ${FMT_CMAKE_DIR})
|
||||||
|
|
||||||
# Install the library and headers.
|
# Install the library and headers.
|
||||||
|
if (FMT_MODULE AND FMT_USE_CMAKE_MODULES)
|
||||||
|
set(INSTALL_FILE_SET FILE_SET fmt DESTINATION ${FMT_INC_DIR}/fmt)
|
||||||
|
endif ()
|
||||||
install(
|
install(
|
||||||
TARGETS ${INSTALL_TARGETS}
|
TARGETS ${FMT_TARGETS}
|
||||||
COMPONENT fmt_core
|
COMPONENT fmt_core
|
||||||
EXPORT ${targets_export_name}
|
EXPORT ${targets_export_name}
|
||||||
LIBRARY DESTINATION ${FMT_LIB_DIR}
|
LIBRARY DESTINATION ${FMT_LIB_DIR}
|
||||||
@ -521,12 +521,12 @@ if (FMT_INSTALL)
|
|||||||
COMPONENT fmt_core)
|
COMPONENT fmt_core)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
# Generate an export file in the build tree so that fmt can be used by
|
# Generate a build-tree export so that targets depending on fmt can also be
|
||||||
# add_subdirectory() or FetchContent without being installed. Use a
|
# exported without installing fmt, including when fmt is provided through
|
||||||
# namespace because CMake provides better diagnostics for namespaced
|
# add_subdirectory() or FetchContent. Use a namespace because CMake provides
|
||||||
# imported targets.
|
# better diagnostics for namespaced imported targets.
|
||||||
export(
|
export(
|
||||||
TARGETS ${INSTALL_TARGETS}
|
TARGETS ${FMT_TARGETS}
|
||||||
NAMESPACE fmt::
|
NAMESPACE fmt::
|
||||||
FILE ${PROJECT_BINARY_DIR}/${targets_export_name}.cmake)
|
FILE ${PROJECT_BINARY_DIR}/${targets_export_name}.cmake)
|
||||||
|
|
||||||
|
|||||||
@ -16,11 +16,9 @@ if (TARGET fmt::fmt-header-only)
|
|||||||
target_link_libraries(header-only-test fmt::fmt-header-only)
|
target_link_libraries(header-only-test fmt::fmt-header-only)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
# Test that a target publicly depending on fmt can itself be exported even
|
# Test that a target depending on fmt can itself be exported (#4806).
|
||||||
# though fmt is added via add_subdirectory and FMT_INSTALL is off (#4806).
|
add_library(export-test INTERFACE)
|
||||||
add_library(export-test STATIC export-lib.cc)
|
target_link_libraries(export-test INTERFACE fmt::fmt)
|
||||||
target_link_libraries(export-test PUBLIC fmt::fmt)
|
|
||||||
export(
|
export(
|
||||||
TARGETS export-test
|
TARGETS export-test
|
||||||
NAMESPACE test::
|
|
||||||
FILE ${CMAKE_CURRENT_BINARY_DIR}/export-test-targets.cmake)
|
FILE ${CMAKE_CURRENT_BINARY_DIR}/export-test-targets.cmake)
|
||||||
|
|||||||
@ -1,3 +0,0 @@
|
|||||||
#include "fmt/base.h"
|
|
||||||
|
|
||||||
void greet(const char* name) { fmt::print("Hello, {}!\n", name); }
|
|
||||||
Loading…
x
Reference in New Issue
Block a user