CMake构建未使用配置阶段指定的x64架构问题求助
解决指定x64架构却生成32位可执行文件的问题
问题根源
Conan生成的conan_toolchain.cmake已经锁定了32位架构配置,其优先级高于CMake命令中指定的-A x64参数。由于所有依赖都是32位版本,编译过程中不存在依赖缺失,因此CMake未抛出报错,最终生成32位可执行文件。
解决步骤
1. 重新生成64位Conan依赖与toolchain文件
首先清空project_folder\build目录下的所有文件(避免缓存残留干扰),然后根据你的Conan版本执行对应命令:
Conan 2.x 版本:
conan install .. --settings arch=x86_64 --settings build_type=Release --output-folder=build
Conan 1.x 版本:
conan install .. -s arch=x86_64 -s build_type=Release
执行完成后,build目录会生成适配x64架构的conan_toolchain.cmake和对应的64位依赖库。
2. 重新执行CMake配置与构建
进入project_folder\build目录,运行以下命令:
cmake .. -G "Visual Studio 17 2022" -A x64 -DCMAKE_TOOLCHAIN_FILE="conan_toolchain.cmake" cmake --build . --config Release
3. 验证生成文件架构
检查最终生成的可执行文件,64位PE文件的标识为PE+(32位为PE L),确认架构符合预期。
额外排查要点
- 检查项目的
conanfile.txt或conanfile.py,确保没有硬编码arch=x86之类的32位强制设置 - 查看CMakeLists.txt,确认不存在
set(CMAKE_CXX_FLAGS "-m32")或set(CMAKE_SIZEOF_VOID_P 4)这类强制32位编译的配置 - 确保使用的Visual Studio开发者命令提示符为x64 Native Tools Command Prompt,避免环境变量对架构选择的干扰
内容的提问来源于stack exchange,提问作者steep
相关产品推荐
相关产品推荐

