CMake检测到Catch2但因版本不兼容无法使用的问题咨询
问题原因及解决方法
核心原因
错误提示里的(64bit)是关键——你的CMake工程默认使用32位(x86)架构,但你安装的Catch2是64位(x64)版本,两者架构不匹配,导致CMake无法找到兼容的配置文件(CMake的错误提示用了"版本不匹配"的描述,实际是架构不兼容的问题)。
解决方法
方法一:切换CMake工程为64位架构
如果你的目标是使用64位的Catch2,只需让CMake生成64位的工程:
- CMake-GUI操作:点击"Configure"时,选择对应VS版本的x64生成器(比如
Visual Studio 17 2022 - x64) - 命令行操作:
注意替换cmake -Bbuild -G "Visual Studio 17 2022" -A x64 .Visual Studio 17 2022为你实际安装的VS版本(比如VS2019对应Visual Studio 16 2019)
方法二:重新安装32位版本的Catch2
如果你的工程必须用32位,重新编译安装32位的Catch2:
git clone git@github.com:catchorg/Catch2.git cd Catch2 # 指定32位架构编译 cmake -Bbuild . -DBUILD_TESTING=OFF -A Win32 cmake --build build/ --config release --target install
安装完成后,原CMakeLists.txt的find_package(Catch2)即可正常工作。
方法三:手动指定Catch2路径(应急方案)
确保工程是64位架构的前提下,直接指定Catch2的配置文件路径:
project(UnitTest) cmake_minimum_required(VERSION 3.20) set(CMAKE_CXX_STANDARD 17) # 手动指定64位Catch2的配置路径 find_package(Catch2 3.3.2 REQUIRED PATHS "C:/Program Files (x86)/Catch2/lib/cmake/Catch2" NO_DEFAULT_PATH )
内容的提问来源于stack exchange,提问作者Gorun
相关产品推荐
相关产品推荐

