fmtlib/fmt

12.2.0 fails to build with old CMake 3.15.1

Fechada

#4.818 aberto em 18 de jun. de 2026

 (0 comentário) (0 reação) (0 responsável)C++ (2.881 forks)batch import
help wanted

Métricas do repositório

Stars
 (23.489 estrelas)
Métricas de merge de PR
 (Mesclagem média 2d 9h) (12 fundiu PRs em 30d)

Description

Hello,

According to CMakeLists.txt supported version range it should work with 3.8 and newer versions. But on old 3.15.1 (default in OpenWRT 19.07) it broke in setup_target() function when specifying VERSION, SOVERSION and DEBUG_POSTFIX properties for INTERFACE type fmt-header-only target.

-- {fmt} version: 12.2.0
-- Build type: Release
CMake Error at CMakeLists.txt:259 (set_target_properties):
  INTERFACE_LIBRARY targets may only have whitelisted properties.  The
  property "VERSION" is not allowed.
Call Stack (most recent call first):
  CMakeLists.txt:418 (setup_target)


CMake Error at CMakeLists.txt:259 (set_target_properties):
  INTERFACE_LIBRARY targets may only have whitelisted properties.  The
  property "SOVERSION" is not allowed.
Call Stack (most recent call first):
  CMakeLists.txt:418 (setup_target)


CMake Error at CMakeLists.txt:259 (set_target_properties):
  INTERFACE_LIBRARY targets may only have whitelisted properties.  The
  property "DEBUG_POSTFIX" is not allowed.
Call Stack (most recent call first):
  CMakeLists.txt:418 (setup_target)

This worked fine on 12.1.0. Not sure if it is best way, but can be fixed by not setting shared library specific properties for INTERFACE header-only targets. Patch in attachment

001-fix-cmake.patch

Guia do colaborador