From 8e80b8f22c186e2bb6bf900b4ab7a479f3943d95 Mon Sep 17 00:00:00 2001 From: Vincent Saulue-Laborde Date: Wed, 17 Apr 2024 21:26:13 +0200 Subject: [PATCH] conanfile: set compatibility_cppstr = False. The Catch libraries have different API/ABI depending on the c++ standard they are compiled with. For example, the following function isn't in the binary when compiled with C++14, only with C++17 or later: StringMaker::convert(std::string_view str); By default, Conan is allowed to serve Catch libraries compiled in C++14 into a project using C++17/20, potentially causing linker errors because of missing symbols. This PR overrides this default behaviour: the C++ standard of the Catch library will exactly match the one of the requiring project (building Catch from source if necessary). --- conanfile.py | 1 + 1 file changed, 1 insertion(+) diff --git a/conanfile.py b/conanfile.py index 8f45b8a9..bcdd426f 100755 --- a/conanfile.py +++ b/conanfile.py @@ -19,6 +19,7 @@ class CatchConan(ConanFile): license = "BSL-1.0" version = "latest" settings = "os", "compiler", "build_type", "arch" + extension_properties = {"compatibility_cppstd": False} options = { "shared": [True, False],