C++ CMake无法看到SDL2_路径环境变量(Windows)

C++ CMake无法看到SDL2_路径环境变量(Windows),c++,windows,cmake,C++,Windows,Cmake,我想构建一个使用SDL2的项目。我下载了SDL2的windows开发包,将其放到D:\lib\SDL2-2.0.10,并将SDL2_路径环境变量设置为该路径 项目用于查找库,其中${SDL2\u PATH}列在SDL2\u搜索路径中 如果我尝试运行CMake,它将无法找到SDL2。环境变量设置正确,我使用powershell中的echo$env:SDL2_PATH进行了检查 但如果我把这一行放在CMakeLists.txt的开头,它就会起作用: set(SDL2_PATH "D:\\lib\\S

我想构建一个使用SDL2的项目。我下载了SDL2的windows开发包,将其放到
D:\lib\SDL2-2.0.10
,并将
SDL2_路径
环境变量设置为该路径

项目用于查找库,其中
${SDL2\u PATH}
列在
SDL2\u搜索路径中

如果我尝试运行CMake,它将无法找到SDL2。环境变量设置正确,我使用powershell中的
echo$env:SDL2_PATH
进行了检查

但如果我把这一行放在
CMakeLists.txt
的开头,它就会起作用:

set(SDL2_PATH "D:\\lib\\SDL2-2.0.10")

为什么CMake无法看到
SDL2\u路径
环境变量?我错了什么?

文件查找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
语法读取一个,以便将环境变量的内容导入CMake

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

set(SDL2_PATH $ENV{SDL2_PATH})


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