You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CMake列表首元素与预期值对比失败问题求助

问题原因及解决办法
  • 核心错误:CMake变量名是区分大小写的,你通过list(GET)定义的变量是全大写的MAJOR,但在if判断里误用了首字母大写的Major,这两个是完全独立的变量,所以判断条件永远不成立。

  • 修正后的基础代码:

# Get python installation details
find_package(Python3 REQUIRED COMPONENTS Interpreter Development NumPy) 
# Create a list from the numpy version
string(REPLACE "." ";" VERSION_LIST ${Python3_NumPy_VERSION})
# Get the first element
list(GET VERSION_LIST 0 MAJOR)
# Create variable
set(MY_VARIABLE "1")
# now do comparison
if (MAJOR STREQUAL MY_VARIABLE)
    Message("Numpy OK")
else()
    Message(FATAL_ERROR "Wrong version of numpy found, please install version 1.26 upwards")
endif()
  • 更优的版本检查方案:你实际需要的是检查NumPy版本是否≥1.26,手动拆分版本号的方式既繁琐又容易出错,建议直接用CMake自带的版本比较语法:
find_package(Python3 REQUIRED COMPONENTS Interpreter Development NumPy) 

if (Python3_NumPy_VERSION VERSION_LESS "1.26")
    Message(FATAL_ERROR "Wrong version of numpy found, please install version 1.26 upwards")
else()
    Message("Numpy OK")
endif()

这种方式不需要手动处理版本拆分,CMake会自动解析版本字符串并完成比较,逻辑更准确也更简洁。

内容的提问来源于stack exchange,提问作者RoachFIsher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 04:32:41