diff --git a/test_package/CMakeLists.txt b/test_package/CMakeLists.txt index ce2cf5b1..770b3d8f 100644 --- a/test_package/CMakeLists.txt +++ b/test_package/CMakeLists.txt @@ -27,3 +27,4 @@ find_package(mp-units CONFIG REQUIRED) add_executable(test_package test_package.cpp) target_link_libraries(test_package PRIVATE mp-units::mp-units) +target_compile_definitions(test_package PRIVATE MP_UNITS_USE_LIBFMT=$) diff --git a/test_package/conanfile.py b/test_package/conanfile.py index 048827ad..83eae228 100644 --- a/test_package/conanfile.py +++ b/test_package/conanfile.py @@ -24,12 +24,20 @@ import os from conan import ConanFile from conan.tools.build import can_run -from conan.tools.cmake import CMake, cmake_layout +from conan.tools.cmake import CMake, CMakeToolchain, cmake_layout +from conan.tools.scm import Version class TestPackageConan(ConanFile): settings = "os", "arch", "compiler", "build_type" - generators = "CMakeDeps", "CMakeToolchain", "VirtualRunEnv" + generators = "CMakeDeps" + + @property + def _use_libfmt(self): + compiler = self.settings.compiler + version = Version(self.settings.compiler.version) + std_support = compiler == "msvc" and version >= 193 and compiler.cppstd == 23 + return not std_support def requirements(self): self.requires(self.tested_reference_str) @@ -37,6 +45,11 @@ class TestPackageConan(ConanFile): def layout(self): cmake_layout(self) + def generate(self): + tc = CMakeToolchain(self) + tc.variables["MP_UNITS_USE_LIBFMT"] = self._use_libfmt + tc.generate() + def build(self): cmake = CMake(self) cmake.configure() diff --git a/test_package/test_package.cpp b/test_package/test_package.cpp index 729c0083..c45dfdb5 100644 --- a/test_package/test_package.cpp +++ b/test_package/test_package.cpp @@ -20,6 +20,7 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. +#include #include #include #include @@ -35,5 +36,5 @@ constexpr QuantityOf auto avg_speed(QuantityOf auto d int main() { using namespace mp_units::si::unit_symbols; - std::cout << "Average speed = " << avg_speed(240 * km, 2 * h) << '\n'; + std::cout << MP_UNITS_STD_FMT::format("Average speed = {}\n", avg_speed(240 * km, 2 * h)); }