CMake无法看到SDL2_PATH环境变量(Windows)

时间:2019-12-03 23:04:12

标签: c++ windows cmake

我想构建一个使用SDL2的项目。我下载了SDL2的Windows开发包,将其放在def recursive_sumrange(start, stop): if start > stop: return sum([i for i in range(stop, start + 1)]) else: return sum([i for i in range(start, stop + 1)]) print(recursive_sumrange(int(input("Enter start: ")), int(input("Enter stop: ")))) 中,并将D:\lib\SDL2-2.0.10环境变量设置为此路径。

该项目使用FindSDL2.cmake查找库,其中SDL2_PATH${SDL2_PATH}中列出。

如果我尝试运行CMake,它将找不到SDL2。环境变量设置正确,我在Powershell中使用SDL2_SEARCH_PATHS进行了检查。

但是我将这一行放在echo $env:SDL2_PATH的开头,然后就可以了:

CMakeLists.txt

为什么CMake无法看到set(SDL2_PATH "D:\\lib\\SDL2-2.0.10") 环境变量?我怎么了?

1 个答案:

答案 0 :(得分:1)

FindSDL2.cmake文件查找CMake变量${SDL2_PATH},您必须自己在CMake文件中定义。如果不定义它,该变量将为。在此文件中查看代码:

SET(SDL2_SEARCH_PATHS
    ~/Library/Frameworks
    /Library/Frameworks
    /usr/local
    /usr
    /sw # Fink
    /opt/local # DarwinPorts
    /opt/csw # Blastwave
    /opt
    ${SDL2_PATH}
)

我们可以告诉CMake使用ENV语法读取environment variable,以便将环境变量的内容导入CMake。

因此,请尝试将其放在CMake的开头:

set(SDL2_PATH $ENV{SDL2_PATH})

FindSDL2.cmake文件确实读取了SDL2DIR环境变量。因此,您无需设置CMake文件中的SDL2_PATH,而只需设置SDL2DIR环境变量即可。