Add C11 API with type-safe formatting (#4663) (#4671)

This commit is contained in:
Soumik15630m
2026-02-16 20:36:32 +05:30
committed by GitHub
parent b35de87ad9
commit 1dc644e021
4 changed files with 505 additions and 0 deletions

View File

@@ -533,3 +533,51 @@ if (FMT_MASTER_PROJECT AND EXISTS ${gitignore})
set(CPACK_RESOURCE_FILE_README ${PROJECT_SOURCE_DIR}/README.md)
include(CPack)
endif ()
# C API Wrapper
add_library(fmt_c STATIC src/fmt-c.cc)
target_compile_features(fmt_c PUBLIC cxx_std_11)
target_link_libraries(fmt_c PUBLIC fmt::fmt)
target_include_directories(fmt_c PUBLIC
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
)
set_target_properties(fmt_c PROPERTIES
VERSION ${FMT_VERSION}
SOVERSION ${CPACK_PACKAGE_VERSION_MAJOR}
DEBUG_POSTFIX "${CMAKE_DEBUG_POSTFIX}"
C_VISIBILITY_PRESET default
CXX_VISIBILITY_PRESET hidden
)
add_library(fmt::fmt_c ALIAS fmt_c)
if(FMT_INSTALL)
install(TARGETS fmt_c
EXPORT fmt-targets
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
)
install(FILES include/fmt/fmt-c.h
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/fmt
)
endif()
if(FMT_TEST)
enable_language(C)
message(STATUS "Adding C API test executable")
add_executable(test-c-api test/test_c.c)
target_link_libraries(test-c-api PRIVATE fmt::fmt_c)
set_target_properties(test-c-api PROPERTIES
C_STANDARD 11
C_STANDARD_REQUIRED ON
)
if(MSVC)
target_compile_options(test-c-api PRIVATE /Zc:preprocessor)
endif()
add_test(NAME c-api-test COMMAND test-c-api)
endif()