@@ -57,6 +57,9 @@ class PlotjugglerCoreConan(ConanFile):
5757 "arrow/*:with_snappy" : True ,
5858 # pj_datastore's Arrow IPC import path needs nanoarrow_ipc + flatcc.
5959 "nanoarrow/*:with_ipc" : True ,
60+ # fmt is an implementation detail. Compile it header-only so the
61+ # static archives do not export a downstream fmt link dependency.
62+ "fmt/*:header_only" : True ,
6063 # Boost is pulled in transitively by arrow. without_cobalt avoids a
6164 # known upstream packaging error in recent boost recipes; without_test
6265 # trims unneeded modules.
@@ -84,9 +87,19 @@ def requirements(self):
8487 # nlohmann_json appears in public headers (widget_data, plugin_catalog).
8588 self .requires ("nlohmann_json/3.12.0" , transitive_headers = True )
8689
90+ # fmt is private and header-only at build time; do not propagate it
91+ # into consumers of this static-library package.
92+ self .requires (
93+ "fmt/12.1.0" ,
94+ headers = True ,
95+ libs = False ,
96+ visible = False ,
97+ transitive_headers = False ,
98+ transitive_libs = False ,
99+ )
100+
87101 if self .options .with_datastore :
88- # fmt + tsl-robin-map are private; nanoarrow is in public headers.
89- self .requires ("fmt/12.1.0" )
102+ # tsl-robin-map is header-only; nanoarrow is in public headers.
90103 self .requires ("tsl-robin-map/1.4.0" , transitive_headers = True )
91104 self .requires ("nanoarrow/0.7.0" , transitive_headers = True )
92105
@@ -161,7 +174,6 @@ def package_info(self):
161174 ds .includedirs = ["include" ]
162175 ds .requires = [
163176 "base" ,
164- "fmt::fmt" ,
165177 "tsl-robin-map::tsl-robin-map" ,
166178 "nanoarrow::nanoarrow" ,
167179 ]
0 commit comments