我试图构建一个我在GitHub上找到的项目,它失败了,因为显然CMake没有检测到支持的架构:
cmake_minimum_required(3.1)
project(myproject LANGUAGES CXX C)
# Architecture string.
set(ARCH "${CMAKE_SYSTEM_PROCESSOR}" CACHE STRING "Override CPU architecture")
string(REGEX REPLACE "amd64" "x86_64" KERNEL_ARCH "${ARCH}")
if("${KERNEL_ARCH}" STREQUAL "x86_64")
set(ARCH "x64")
else()
message(FATAL_ERROR "Unsupported ARCH: ${KERNEL_ARCH}")
endif()
字符串
这总是失败,并返回错误:
不支持的磁盘:AMD 64
我用的是Windows,我的架构是x86_64。我有一个英特尔i7。
1条答案
按热度按时间o8x7eapl1#
可能是因为项目没有考虑到不同大小写的可能性。他们的正则表达式
string(REGEX REPLACE)
是amd64
,这与您的AMD64
不匹配。参见
CMAKE_SYSTEM_PROCESSOR
的文档:当不进行交叉编译时,此变量与
CMAKE_HOST_SYSTEM_PROCESSOR
变量具有相同的值。以及Windows平台上
CMAKE_HOST_SYSTEM_PROCESSOR
的文档,其中指出:在Windows上,此变量设置为环境变量
PROCESSOR_ARCHITECTURE
的值。对我来说更奇怪(因为我不熟悉这个环境变量或您遇到问题的项目),https://superuser.com/q/305901/1749748的(指的是https://learn.microsoft.com/en-ca/windows/win32/winprog64/wow64-implementation-details)并没有将Linux版本作为环境变量的可能值列出。也许Linux版本对于其他平台是正常的(比如Unix的(见相关的CMake文档)),项目维护者从未在Windows平台上测试过。我建议你向他们提出问题,让他们处理这个问题。