fmtlib/fmt

12.2.0 fails to build with old CMake 3.15.1

クローズ

#4,818 opened on 2026/06/18

 (0 件のコメント) (0 件のリアクション) (0 人の担当者)C++ (2,881 件のフォーク)batch import
help wanted

Repository metrics

Stars
 (23,489 個のスター)
PR merge metrics
 (平均マージ 2d 9h) (30d で 12 merged PRs)

説明

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

コントリビューターガイド