首页 > 解决方案 > export CMAKE_PREFIX_PATH=...有什么作用?

问题描述

在 google-ing 的export CMAKE_PREFIX_PATH时候,经常会发现提示可以通过设置环境变量来解决 CMake 找不到这个包或者那个包的问题:

export CMAKE_PREFIX_PATH=/path/to/package

我已经说服自己设置此环境变量具有附加 /path/to/package到 CMake 调用中指定的路径列表的效果,使用

cmake -DCMAKE_PREFIX_PATH="/path/to/package1;..." .

(我已经在 macOS Catalina 和 Ubuntu 18.04 上分别使用 CMake 3.15.5 和 3.16.0 进行了尝试。)

该文档没有提到任何这些。事实上,它只是说:

默认情况下,此 [ CMAKE_PREFIX_PATH] 为空。它旨在由项目设置。

(请参阅CMake 文档)。没有提到设置环境变量的效果。

这提出了两个问题:

标签: cmake

解决方案


默认情况下,将其设置为环境变量的效果是没有效果的。CMake 在 CMake 项目根目录中名为 CMakeCache.txt 的文件中定义它自己的变量(使用 set() 命令或 -D 命令行参数设置的变量)。这些是会影响您的 cmake 脚本的变量。

为了在 CMake 中访问和环境变量,您需要指定ENV 语法

$ENV{VAR}

因此,即使您设置了 CMAKE_PREFIX_PATH 环境变量,除非您在 CMakeLists.txt 中明确使用它,否则它不会产生任何影响。

(编辑:我只在带有 CMake 3.16.3 的 Windows 10 上验证了这种行为)


推荐阅读