CMake中project()语句导致UNIX变量被清除的问题排查
问题原因分析
这个现象是CMake 3.24.0-rc3版本的预发布bug导致的,具体细节如下:
project()命令在CMake中的核心作用之一是重新初始化目标平台的检测流程,包括设置UNIX、WIN32这类系统标识变量。正常情况下,在WSL2这类类UNIX环境中,执行project()后UNIX变量应该保持为1。- 但在3.24.0-rc3这个预发布版本中,存在平台检测逻辑的回归问题,导致
project()执行后UNIX变量没有被正确重新赋值,最终出现变量被清空的情况。 - 这类问题通常仅出现在预发布版本中,CMake的正式版本会修复这类回归。你可以尝试升级到CMake 3.24.0正式版或更高版本,该问题会随之消失。
另外可以简单验证这个结论:换用同分支的正式版CMake执行相同代码,after的输出会恢复为1。
内容的提问来源于stack exchange,提问作者Ashley Duncan
相关产品推荐
相关产品推荐

