如何解决conan install --build 由于版本不匹配而失败,即使更改了默认值
我正在使用 conan 来处理依赖项,并且我已经能够通过运行 source
和 build
等各个步骤来编译和运行项目。
然而,我希望能够在一个步骤中安装和构建,为此我这样做:
conan install . -if build -s build_type=Debug --build
在这种情况下,我得到了一些包:
Compiler version specified in your conan profile: 10.3
Compiler version detected in CMake: 9.3
Please check your conan profile settings (conan profile show
[default|your_profile_name])
P.S. You may set CONAN_disABLE_CHECK_COMPILER CMake variable in order to
disable this check.
现在我可以更改配置文件设置以匹配请求的编译器设置,但是其他不同的包开始抱怨编译器版本不匹配。即一些软件包需要版本 9.3,其他版本 10.3,其他版本 9...
考虑到如果我单独运行构建步骤,包依赖项已经与我的可执行文件链接,我不确定为什么我会得到这个 catch 22 行为。
我在评论中尝试了一个建议,将其添加到我的 conanfile.py
def configure(self):
# gcc compiler version
defs = {}
if self.settings.compiler == "gcc":
defs["CMAKE_C_COMPILER"] = f"gcc-{self.settings.compiler.version}"
defs["CMAKE_CXX_COMPILER"] = f"g++-{self.settings.compiler.version}"
# configure cmake
cmake = CMake(self)
cmake.configure(defs = defs)
return super().configure()
我得到一个例外。
解决方法
如果您不告诉 CMake 您要使用的编译器,它会尝试在 project(...)
调用中发现它。如果它们不匹配,Conan 宏执行的检查将失败。
通常,如果您想使用与默认版本不同的编译器版本,则需要通知 CMake。使用柯南配置文件执行此操作的最常见方法之一是将 CC
和 CXX
变量添加到配置文件本身。
[settings]
...
compiler=gcc
compiler.version=10.3
...
[env]
CC=/usr/bin/gcc-10
CXX=/usr/bin/g++-10
Conan 会在调用构建系统之前将这些变量添加到环境中,并且大多数(CMake、Autotools 等)都会将它们考虑在内。
这样,您无需修改 conanfile.py
文件。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。