【问题标题】:How to find (configure) Qt for cmake project of iOS?如何为 iOS 的 cmake 项目查找(配置)Qt?
【发布时间】:2020-06-24 14:12:27
【问题描述】:

我通过在线安装程序在我的 macOS 上安装 Qt(Qt for iOS 和 macOS)。 qmake 项目工作正常,现在我需要用 cmake Qt 项目编译:

cmake_minimum_required(VERSION 3.5)
project(demo LANGUAGES CXX)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

find_package(Qt5 COMPONENTS Core Quick REQUIRED)

我找不到 Qt。

直接构建配置:

cmake .. -GXcode -DQt5_DIR=/Users/user/Qt/5.14.1/clang_64/lib/cmake/Qt5
...
-- Configuring done
-- Generating done
-- Build files have been written to:

iOS 的交叉编译:

cmake .. -GXcode -DCMAKE_SYSTEM_NAME=iOS -DQt5_DIR=/Users/user/Qt/5.14.1/ios/lib/cmake/Qt5
...
CMake Error at /Users/user/Qt/5.14.1/ios/lib/cmake/Qt5/Qt5Config.cmake:28 (find_package):
  Could not find a package configuration file provided by "Qt5Core" with any
  of the following names:

    Qt5CoreConfig.cmake
    qt5core-config.cmake

  Add the installation prefix of "Qt5Core" to CMAKE_PREFIX_PATH or set
  "Qt5Core_DIR" to a directory containing one of the above files.  If
  "Qt5Core" provides a separate development package or SDK, be sure it has
  been installed.

显然 Qt5CoreConfig.cmake 很好,它与“直接”编译的位置相对相同,但由于某种原因 cmake 找不到它

$ find /Users/user/Qt/5.14.1/ios/lib/cmake/ -name Qt5CoreConfig.cmake
/Users/user/Qt/5.14.1/ios/lib/cmake//Qt5Core/Qt5CoreConfig.cmake

我该如何解决这个问题?

【问题讨论】:

  • 您可以通过设置CMAKE_PREFIX_PATH CMake 变量来解决这个问题。
  • @squareskittles 不,正如我在上面显示的那样,它在“直接编译案例”中对我来说很好,但相对相同的路径不适用于交叉编译案例。
  • @squareskittles CMAKE_PREFIX_PATH 根本不适合我。不用于直接编译,也不用于交叉编译。虽然 Qt5_Dir 有效,但仅适用于“直接”情况。
  • 设置 -DCMAKE_PREFIX_PATH=/Users/user/Qt/5.14.1/clang_64 应该适用于“直接”构建。如果设置 -DCMAKE_PREFIX_PATH=/Users/user/Qt/5.14.1/ios 不适用于交叉编译,那么您的工具链需要外部库位于 sysroot 或工具链中指定的其他“根路径”下。

标签: c++ ios macos qt cmake


【解决方案1】:

为 iOS 构建时,CMAKE_SYSROOT 设置为 iPhoneOS.sdk 路径。

find_package:

CMAKE_SYSROOT 变量也可以用来指定一个目录作为前缀。设置 CMAKE_SYSROOT 还有其他效果。有关更多信息,请参阅该变量的文档。

这些变量在交叉编译指向目标环境的根目录时特别有用,CMake 也会在那里搜索。默认先查找CMAKE_FIND_ROOT_PATH中列出的目录,然后查找CMAKE_SYSROOT目录,再查找非root目录。

所以,添加选项 -DCMAKE_FIND_ROOT_PATH=/Users/user/Qt/5.14.1/ios 会有所帮助。

【讨论】:

    猜你喜欢
    • 2017-04-10
    • 2023-01-18
    • 1970-01-01
    • 2018-03-16
    • 2017-11-21
    • 1970-01-01
    • 1970-01-01
    • 2016-09-17
    • 2020-10-12
    相关资源
    最近更新 更多