QT报错Could not read qmake configuration file QT5.14.2/5.14.2/android/mkspecs/android-clang/qmake.conf

文章讲述了在Ubuntu20.04环境下,使用QT5.14.2时遇到cmake安装和配置错误,着重介绍了如何卸载SNAP安装的cmake,通过apt、官网下载编译包和手动编译源文件的方式重新安装cmake,并解决了新建QT项目的问题。

layout: post
title: ubuntu下安装报错Could not read qmake configuration file /opt/QT5.14.2/5.14.2/android/mkspecs/android-clang/qmake.conf.
subtitle: QT安装使用报错,以及重新安装cmake
date: 2023-11-18
author: BY ThreeStones1029
header-img: img/about_bg.jpg
catalog: true
tags: qt


一、前言

最近需要做一个QT界面,在安装过后,新建项目QT Widgets Application会报错,选用cmake会报错:

Project ERROR: You need to set the ANDROID_NDK_ROOT environment variable to point to your Android NDK.
Could not read qmake configuration file /opt/QT5.14.2/5.14.2/android/mkspecs/android-clang/qmake.conf.
Running /usr/bin/snap /home/***/Desktop/test -DCMAKE_BUILD_TYPE:STRING=Debug -DCMAKE_CXX_COMPILER:STRING=/usr/bin/g++ -DCMAKE_C_COMPILER:STRING=/usr/bin/gcc -DCMAKE_PREFIX_PATH:STRING=/opt/QT5.14.2/5.14.2/gcc_64 -DQT_QMAKE_EXECUTABLE:STRING=/opt/QT5.14.2/5.14.2/gcc_64/bin/qmake in /home/***/Desktop/build-test-Desktop_Qt_5_14_2_GCC_64bit-Debug.
error: unknown command "/home/***/Desktop/test", see 'snap help'.
我的环境:ubuntu20.04  QT5.14.2

二、问题分析

主要发现的后面提示==“snap help”,很诧异,为什么会提示这个,然后查看Tools–>Options–>Kits–>CMak==e发现我的cmake是通过snap安装的。通过这个安装会带来路径和权限问题,所以解决方法就很简单了。

三、问题解决

卸载snap安装的cmake,同时手动安装cmake

3.1.卸载snap的cmake

sudo snap remove cmake

在安装之前还需要看看有没有其余方式安装的cmake,例如apt安装的以及手动安装编译的版本。如果不卸载干净有可能导致版本混乱报错,所以最好卸载干净。

可以运行cmake --version ccmake --version cmake-gui which cmake查看是否有没有卸载的版本

3.2.重新安装cmake(三种方式)

3.2.1.ubuntu apt安装

sudo apt-get update
sudo apt install cmake
sudo apt-get install -y build-essential

省事但版本比较老,不过对于版本没有需求其实也够用

3.2.2.去官网下载编译好的包

直接下载二进制包的话,官网链接:https://cmake.org/files/

进入选择需要下载的版本,示例选择的是cmake-3.24.0-linux-x86_64.tar.gz

解压并添加软连接:

tar -zxvf cmake-3.24.0-linux-x86_64.tar.gz
sudo ln -s 你的解压根目录/cmake-3.24.0-linux-x86_64/bin/cmake /usr/bin/cmake

如果提示已经存在则删除老版本

rm /usr/bin/cmake

测试

cmake --version

正常输出版本号即可

确定就是没有cmake-gui

3.2.3.下载源文件编译

如果想可以运行cmake-gui,想要图形化界面可以下载包自己编译

下载带有rc的包,以cmake-3.27.0-rc1.tar.gz为例

同样先解压

tar -zxvf  cmake-3.27.0-rc1.tar.gz

建立build文件

cd cmake-3.27.0-rc1/build

编译cmake和cmake-gui(前提已经安装了qt)

../bootstrap --qt-gui
make -j$(nproc) #-j$(代表)电脑核数,不写写行,加了编译更快点
sudo make install

验证

cmake --version
cmake-gui

3.3.4.新建QT项目

发现build完就能run,bug解决。

也可以到个人博客查看

<think>好的,我现在需要解决用户提到的Qt配置文件中的语法错误,具体是qt5qt_config.prf文件在fsl-imx-x11的sysroot中出现“missing terminator”错误。首先,我需要了解这个错误通常是什么原因导致的。 根据经验,这种错误通常与qmake的语法有关,尤其是在.prf文件中可能存在括号不匹配、引号未闭合或者变量展开的问题。用户提到的是在交叉编译环境下使用fsl-imx-x11的sysroot,这可能涉及到特定于平台的配置,或者路径中的特殊字符导致解析错误。 接下来,我应该检查用户提到的qt_config.prf文件是否存在语法错误。比如,查看是否有未闭合的括号{},或者字符串中的引号没有正确配对。另外,可能使用了不兼容的变量展开方式,比如在.pro或.prf文件中,变量使用$$VAR,但如果有嵌套或复杂的表达式,可能需要更仔细的处理。 用户提供的引用[5]中提到,可以通过CONFIG加载.prf文件,并且在编写.prf时需要注意语法,比如正确使用message命令和变量赋值。例如,如果prf文件中存在类似message("---...")的语句,必须确保字符串正确闭合,否则会导致解析错误。同时,检查是否有未闭合的条件判断语句,如contains(...) { ... } 是否缺少了闭合的括号。 另外,引用[3]提到了QT_CONFIG宏的使用,可能与prf中的特性检测有关。如果qt_config.prf中使用了类似QT_CONFIG(feature)的宏,但配置中没有正确设置对应的特性,可能导致解析错误。需要确认fsl-imx-x11的sysroot中是否正确配置了所需的Qt特性,比如通过检查对应的.pri文件或配置选项。 用户的环境可能涉及到交叉编译,docker构建(如引用[1]中的错误),这时候路径问题可能导致qmake无法正确解析文件。例如,引用了错误的路径,或者路径中包含空格或特殊字符,导致qmake处理时出错。需要检查prf文件中的路径变量是否正确展开,尤其是使用$$PWD或系统变量时是否得到正确的路径。 此外,查看引用[5]中的步骤,用户可能在自定义.prf文件时没有正确设置QMAKEFEATURES变量,或者.prf文件本身存在语法问题。比如,是否在.prf中正确闭合了所有的括号和引号,是否有拼写错误等。例如,如果有一个message("...")没有闭合的引号,就会导致missing terminator错误。 可能的解决步骤包括: 1. 检查qt_config.prf文件,逐行确认语法,特别是括号和引号的闭合。 2. 确保所有变量展开正确,避免嵌套变量导致解析问题。 3. 确认sysroot中的Qt配置是否完整,尤其是相关的.prf和.conf文件是否存在。 4. 检查QMAKEFEATURES路径设置是否正确,确保qmake能找到所需的.prf文件。 5. 尝试简化prf文件,排除可能的错误部分,逐步定位问题所在。 如果用户在docker环境中构建,可能需要检查文件系统的权限或路径映射是否正确,避免qmake无法访问所需的配置文件。此外,参考引用[1]中的类似错误,可能与qmake版本或构建工具链的兼容性有关,需要确认使用的Qt版本是否支持当前的编译环境。</think>要解决Qt配置文件中$qt_config.prf$出现的"missing terminator"错误,请按以下步骤排查: ### 1. 检查PRF文件语法结构 重点关注以下语法问题: - **未闭合的括号**:如条件判断`contains(...) {`缺少闭合的`}` - **引号未闭合**:例如`message("未闭合的字符串...`导致解析中断 - **变量展开错误**:如`$${PWD}`应避免嵌套复杂表达式 - **特殊符号转义**:路径中的空格需用引号包裹,例如`"path/with space"`[^5] ### 2. 验证交叉编译环境配置 在fsl-imx-x11的sysroot中检查: ```bash # 确认prf文件存在性 find /path/to/sysroot -name "qt_config.prf" # 检查文件编码(需为Unix格式) file qt_config.prf dos2unix qt_config.prf # 转换Windows换行符 ``` ### 3. 检查QMake特性加载机制 在工程配置中确认: ```qmake # 正确设置特性搜索路径 QMAKEFEATURES += $${PWD}/custom_features # # 显式加载配置 CONFIG += qt_config # 需与prf文件名一致 ``` ### 4. 使用调试模式定位问题 通过qmake调试输出定位错误行: ```bash qmake -d -d -d 2>&1 | grep -C 10 "terminator" ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值