如何在不更改 PATH 的情况下告诉 Cmake Qt 安装目录?

Gam*_*ads 4 qt qmake cmake

在我的中CMakeLists.txt,我有一个如下所示的电话

find_package(Qt5 COMPONENTS Gui)
Run Code Online (Sandbox Code Playgroud)

但要使上述工作正常,Qt 需要进行如下设置PATH

export PATH=$PATH:/Path/To/QtInstallationFolder/5.12.5/clang_64/bin
Run Code Online (Sandbox Code Playgroud)

当然,使用 Qt 是PATH可行的,但我不想PATH对构建源代码的每台机器进行更改。有没有办法告诉 Cmake 我的 Qt 安装文件夹,而无需PATH在机器上进行更改,也无需更改CMakeLists.txt我的项目?

我已经尝试过以下方法:

export CMAKE_PREFIX_PATH=/Path/To/QtInstallationFolder/5.12.5/clang_64/bin
export CMAKE_FRAMEWORK_PATH=/Path/To/QtInstallationFolder/5.12.5/clang_64/bin
export CMAKE_APPBUNDLE_PATH=/Path/To/QtInstallationFolder/5.12.5/clang_64/bin
Run Code Online (Sandbox Code Playgroud)

但上面没有帮助。

环境:
macOS Catalina
Cmake 版本 3.18.2 Qt 5.12.5

Cor*_*sto 5

export CMAKE_PREFIX_PATH=...您不起作用的原因是您传递了bin子目录而不是安装前缀,正如 @vre 已经在评论中指出的那样。

或者,您可以使用-DQt5_ROOT=/Path/To/QtInstallationFolder/5.12.5/clang_64. 我个人更喜欢使用这些类型的包特定变量,因为在 CI 构建脚本中,您可以轻松地将它们放在单独的行上,这样就不会变得太长。

  • “‘export CMAKE_PREFIX_PATH=...` 不起作用的原因是 CMake 希望这是一个 CMake (Cache-) 变量,而不是环境变量” - 实际上,CMake 检查两个变量,**CMake** 一个和**环境**一。请参阅例如 [find_package](https://cmake.org/cmake/help/latest/command/find_package.html#search-procedure) 的搜索过程。 (2认同)
  • @Tsyvarev 哦,我不知道。谢谢,我已经更新了答案。 (2认同)