柯南包管理器和 CMakePresets.json?可能吗?
Conan package manager and CMakePresets.json? Is it possible?
我刚开始使用 Conan 包管理器。您知道是否可以通过 conanfile.py 中的预设以某种方式调用 cmake?当前的实现如下:
...
def build(self):
cmake = CMake(self)
cmake.configure()
cmake.build()
...
我已经成功地通过以下代码调用了 CMakePresets.json(但它看起来很笨拙 - 我不喜欢它)。
...
def cmake_configure(self)
if self.settings.os == "Linux":
self.run("cmake --preset=linux .")
elif self.settings.os == "Macos":
self.run("cmake --preset=macos .")
elif self.settings.os == "Windows":
self.run("cmake --preset=windows .")
else:
raise ConanInvalidConfiguration("Unsupported OS")
def build(self):
self.cmake_configure()
self.run("cmake --build .")
...
提前致谢
Conan 保持与旧 CMake 版本的向后兼容性。即使对于 Conan 2.0,社区已经达成共识 (https://github.com/conan-io/tribe/pull/4) CMake 3.15 是支持的基础,这意味着 Conan 应该默认使用 CMake 3.15(或更新版本)。如果柯南使用cmake预设,cmake>=3.19,那就不满足了。在某些时候,柯南会添加一些工具来管理预设,但目前没有任何内置的东西。
然而,使用预设可能不是必需的,因为 CMakeToolchain 将生成一个 conan_toolchain.cmake
文件来帮助集成(CMake 生成器仍然需要在命令行中传递) .
我刚开始使用 Conan 包管理器。您知道是否可以通过 conanfile.py 中的预设以某种方式调用 cmake?当前的实现如下:
...
def build(self):
cmake = CMake(self)
cmake.configure()
cmake.build()
...
我已经成功地通过以下代码调用了 CMakePresets.json(但它看起来很笨拙 - 我不喜欢它)。
...
def cmake_configure(self)
if self.settings.os == "Linux":
self.run("cmake --preset=linux .")
elif self.settings.os == "Macos":
self.run("cmake --preset=macos .")
elif self.settings.os == "Windows":
self.run("cmake --preset=windows .")
else:
raise ConanInvalidConfiguration("Unsupported OS")
def build(self):
self.cmake_configure()
self.run("cmake --build .")
...
提前致谢
Conan 保持与旧 CMake 版本的向后兼容性。即使对于 Conan 2.0,社区已经达成共识 (https://github.com/conan-io/tribe/pull/4) CMake 3.15 是支持的基础,这意味着 Conan 应该默认使用 CMake 3.15(或更新版本)。如果柯南使用cmake预设,cmake>=3.19,那就不满足了。在某些时候,柯南会添加一些工具来管理预设,但目前没有任何内置的东西。
然而,使用预设可能不是必需的,因为 CMakeToolchain 将生成一个 conan_toolchain.cmake
文件来帮助集成(CMake 生成器仍然需要在命令行中传递) .