【发布时间】:2022-02-17 22:15:36
【问题描述】:
如果您使用柯南构建库并将 compiler.cppstd 设置设置为例如20 并调用 conan install,库仍然使用给定编译器的默认标准构建。
The docs说:
消费者提供的compiler.cppstd的值被构建助手使用:
- CMake 构建助手将设置 CONAN_CMAKE_CXX_STANDARD 和 CONAN_CMAKE_CXX_EXTENSIONS 定义,这些定义将转换为相应的 CMake 变量,以使用 conan_basic_setup() 宏自动激活标准。
看来您需要致电conan_basic_setup() 来激活此设置。但我怎么称呼它?通过修补库的 CMakeLists.txt?我当然不想仅仅为了使用正确的标准版本而这样做。我可以看到一些基于设置手动设置 CMake 定义的食谱,例如:
- https://github.com/conan-io/conan-center-index/blob/master/recipes/folly/all/conanfile.py#L117
- https://github.com/conan-io/conan-center-index/blob/master/recipes/crc32c/all/conanfile.py#L58
- https://github.com/conan-io/conan-center-index/blob/master/recipes/azure-storage-cpp/all/conanfile.py#L71
- https://github.com/conan-io/conan-center-index/blob/master/recipes/caf/all/conanfile.py#L105
但这也感觉像是一种黑客行为。那么确保库是使用我指定的compiler.cppstd 构建的正确方法是什么?
【问题讨论】: