conan和cmake编译器版本不匹配问题解决
执行环境:ubuntu
1 问题现象
conan要求的编译器版本和cmake检测到的当前的编译器版本不一致,导致编译失败。
Compiler version specified in your conan profile: 10
Compiler version detected in CMake: 9.4
CMake Error at /home/test/out/x64_Release/build/conanbuildinfo.cmake:1742 (message):
Detected a mismatch for the compiler version between your conan profile
settings and CMake:
Compiler version specified in your conan profile: 10
Compiler version detected in CMake: 9.4
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.
2 解决方法
2.1 在CMakeLists.txt禁止编译器检查
在源代码顶层的CMakeLists.txt
里添加禁止编译器检查的设置,这样可以避免由于conan
要求的编译器版本和cmake
检测到的版本不一致而导致失败。但是这种方式是一种不提倡的方式。
2.1.1 修改方式
set(CONAN_DISABLE_CHECK_COMPILER ON)
2.2 探查问题出现的根本原因
既然cmake检测到的编译器版本和conan要求的不一致,那说明当前系统的配置还是存在一些问题。
在检查gcc和g++的时候发现当前系统存在gcc-9以及g+±9,而这两个编译器对应的版本整好为9.4。这说明当前的gcc的配置可能还是指向了低版本的gcc-9/g+±9
2.2.1 安装升级gcc
sudo apt install gcc-10
安装conan要求的gcc-10版本的编译器sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 10
当系统需要使用gcc时,默认选择gcc-10版本,gcc指向当前系统已经安装的gcc-10
sudo apt update
sudo apt install gcc-10
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 10
2.2.2 安装升级g++
sudo apt install g++-10
安装conan要求的g+±10版本的编译器sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-10 10
当系统需要使用g++时,默认选择g+±10版本,g++指向当前系统已经安装的g+±10
sudo apt install g++-10
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-10 10
注
当按照以上处理执行完成后,可以通过gcc --version查看当前的gcc信息。
若需要切换gcc版本,则可以通过2.2.1
以及2.2.2
的方法去处理。