【发布时间】: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_PATHCMake 变量来解决这个问题。 -
@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 或工具链中指定的其他“根路径”下。