CMake 3.27.7设置CMAKE_BUILD_PARALLEL_LEVEL报错求助
CMake设置CMAKE_BUILD_PARALLEL_LEVEL报错的解决方案
错误根源是CMAKE_BUILD_PARALLEL_LEVEL变量为空,导致你写的表达式展开后变成了" / 2 + 1",开头直接是除法运算符,CMake的math命令无法解析这种非法语法。
解决方法
方法一:先初始化变量再计算
先确保变量有初始值(比如自动获取CPU核心数),再执行计算逻辑:
# 如果变量未定义,先获取CPU核心数作为初始值 if(NOT DEFINED CMAKE_BUILD_PARALLEL_LEVEL) include(ProcessorCount) ProcessorCount(CPU_CORES) set(CMAKE_BUILD_PARALLEL_LEVEL ${CPU_CORES}) endif() # 执行你需要的计算逻辑 math(EXPR CMAKE_BUILD_PARALLEL_LEVEL "${CMAKE_BUILD_PARALLEL_LEVEL} / 2 + 1" OUTPUT_FORMAT DECIMAL)
方法二:直接处理空变量情况
如果不确定变量是否被设置,先判断变量是否存在,为空时直接指定默认值:
if(CMAKE_BUILD_PARALLEL_LEVEL) # 变量有值时执行计算 math(EXPR CMAKE_BUILD_PARALLEL_LEVEL "${CMAKE_BUILD_PARALLEL_LEVEL} / 2 + 1" OUTPUT_FORMAT DECIMAL) else() # 变量为空时直接设置目标值(比如你需要的5) set(CMAKE_BUILD_PARALLEL_LEVEL 5) endif()
注意事项
CMake的math(EXPR)命令要求表达式必须是合法的算术表达式,变量为空会直接破坏表达式结构,所以必须保证计算前变量已被正确初始化。
内容的提问来源于stack exchange,提问作者quester
相关产品推荐
相关产品推荐

