有什么区别
CMAKE_PREFIX_PATH=$PWD/../../qt5/qtbase/:$PWD/../../opencv/build/install/ cmake ..
Run Code Online (Sandbox Code Playgroud)
和
cmake -D CMAKE_PREFIX_PATH=$PWD/../../qt5/qtbase/:$PWD/../../opencv/build/install/ ..
Run Code Online (Sandbox Code Playgroud)
对我来说,第一个似乎工作正常,但第二个不行!我很想知道为什么。
据我了解,在第一个版本中,shell 在调用 cmake 命令之前设置变量,而第二个版本则告诉 cmake 设置变量。那是对的吗?
在大多数情况下您会想要使用第二个版本。
\n\n正如您所注意到的,第一个版本将变量设置为 shell 环境变量,而第二个版本设置 CMake 变量。
\n\n请注意,我们在这里讨论两个不同的变量,它们都被命名为CMAKE_PREFIX_PATH。引用手册find_file:
\n\n\n\n
\n- \n
在cmake 特定的缓存变量中指定的搜索路径。这些旨在与 -DVAR=value 一起在命令行上使用。
\n\nNO_CMAKE_PATH如果通过,则可以跳过此操作。[...]
\n\n
CMAKE_PREFIX_PATH- \n
在cmake 特定的环境变量中指定的搜索路径。这些\n旨在在 user\xe2\x80\x99s shell 配置中设置。如果传递 NO_CMAKE_ENVIRONMENT_PATH,则可以跳过此操作。
\n\n[...]
\n\n
CMAKE_PREFIX_PATH
另请注意,您的第一个版本是不可移植的并且特定于您正在使用的 shell。例如,Windows shell 将完全拒绝该命令。
\n\n您的第二个版本不适合您的原因是您正在使用$PWDshell 中的变量,而 CMake 无法理解该变量。在第一个版本中,它将扩展到您当前的工作目录,而第二个版本只会将未解析的文字字符串传递$PWD给 CMake。
| 归档时间: |
|
| 查看次数: |
10854 次 |
| 最近记录: |