fmtlib/fmt

12.2.0 fails to build with old CMake 3.15.1

已關閉

#4,818 建立於 2026年6月18日

 (0 則留言) (0 個反應) (0 位負責人)C++ (2,881 個分叉)batch import
help wanted

倉庫指標

星標
 (23,489 顆星)
PR 合併指標
 (平均合併 2天 9小時) (30 天內合併 12 個 PR)

描述

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

貢獻者指南