CMake 看不到 SDL2_PATH 环境变量(Windows)

Posted

技术标签:

【中文标题】CMake 看不到 SDL2_PATH 环境变量(Windows)【英文标题】:CMake can not see SDL2_PATH environment variable (Windows) 【发布时间】:2019-12-03 23:04:12 【问题描述】:

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

项目使用FindSDL2.cmake查找库,其中$SDL2_PATH列在SDL2_SEARCH_PATHS中。

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

但是我把这行放在CMakeLists.txt的开头,然后就可以了:

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

为什么 CMake 看不到 SDL2_PATH 环境变量?我哪里错了?

【问题讨论】:

【参考方案1】:

FindSDL2.cmake 文件查找 CMake 变量 $SDL2_PATH,您必须自己在 CMake 文件中定义该变量。如果不定义它,这个变量将是empty。请参阅此文件中的代码:

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 $ENVSDL2_PATH)

FindSDL2.cmake 文件确实读取了SDL2DIR 环境变量。因此,您可以简单地设置 SDL2DIR 环境变量,而不是在 CMake 文件中设置 SDL2_PATH

【讨论】:

以上是关于CMake 看不到 SDL2_PATH 环境变量(Windows)的主要内容,如果未能解决你的问题,请参考以下文章

通过CLion的C ++程序找不到环境变量

unbuntu中安装cmake后怎么修改环境变量

如何在 CMake GUI 中显示 FooConfig.cmake 文件中的 CMake 变量?

cmake 常用变量和常用环境变量

CMake 找不到 Boost_LIBRARIES 变量

cmake set命令