2

我通过在线安装程序在我的 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

我怎样才能解决这个问题?

4

1 回答 1

1

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

find_package

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

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

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

于 2020-11-30T21:26:40.397 回答