xmake-io / xmake

🔥 A cross-platform build utility based on Lua
https://xmake.io
Apache License 2.0
9.58k stars 764 forks source link

交叉编译环境中,Qt找不到uic #4809

Open Wzshun opened 4 months ago

Wzshun commented 4 months ago

Xmake 版本

2.8.8

操作系统版本和架构

endeavour os

描述问题

在自己的一个交叉编译环境里,xmake已经能够构建cpp的hello world的应用,并且能在目标环境里运行。

随后加入Qt,已配置了。(以下xxxx是有相关敏感信息,见谅)

xmake f -p cross --sdk=/home/admin/xmakeCrossTest/xxxxx/host/usr --qt=/home/admin/xmakeCrossTest/xxxxx/build/qt5base-5.9.4

xmake 报错

checking for architecture ... arm64
checking for Qt SDK directory ... /home/android-build/linux/xxxxx/xxxxx/xxxxx/buildroot/output/xxxxx/host/aarch64-buildroot-linux-gnu/sysroot/usr
checking for Qt SDK version ... 5.9.4
error:uic not found

通过修改xmake源码里的find_qt.lua 3f92e34902e0f6b024419446c385d5b

如上使用相关环境的'/get'的返回值,可以找到uic,但是编译时无法找到相关头文件。

推测可能相关的qtenvs都需要使用'/get'的返回值。

期待的结果

none

工程配置

none

附加信息和错误日志

none

Issues-translate-bot commented 4 months ago

Bot detected the issue body's language is not English, translate it automatically.


Title: In a cross-compilation environment, Qt cannot find uic

waruqi commented 4 months ago

qt 交叉编译还不支持

Issues-translate-bot commented 4 months ago

Bot detected the issue body's language is not English, translate it automatically.


Qt cross-compilation is not supported yet

Wzshun commented 4 months ago

不是使用xrepo里的Qt包,而是环境里 已有预编译好的交叉编译版本的Qt。

现在用xmake在开发机环境中,开发目标板的gui,需要给xmake 指定Qt sdk。按理说这样就可以了的,并不会太多工作?

目前是 qmake -query 返回的 带“/get”的路径,但确实是我想要路径,没太明白是什么含义。。。

Issues-translate-bot commented 4 months ago

Bot detected the issue body's language is not English, translate it automatically.


Instead of using the Qt package in xrepo, the environment already has a precompiled cross-compiled version of Qt.

Now use xmake in the development machine environment to develop the gui of the target board. You need to specify Qt sdk for xmake. It stands to reason that this is enough and it won’t be too much work?

Currently, qmake -query returns the path with "/get", but it is indeed the path I want, and I don't quite understand what it means. . .

waruqi commented 4 months ago

都一样,交叉编译没有特别支持过,目前仅支持 win,linux,mac,android 几个平台。。

Issues-translate-bot commented 4 months ago

Bot detected the issue body's language is not English, translate it automatically.


All the same, cross-compilation is not specifically supported. Currently, it only supports win, linux, mac, and android platforms. .

waruqi commented 4 months ago

要支持,得改进下这里,设置上 host exec 路径

https://github.com/xmake-io/xmake/blob/c8e8b6c9395df8064ef374954a81b9e36f5278d3/xmake/modules/detect/sdks/find_qt.lua#L223 https://github.com/xmake-io/xmake/blob/c8e8b6c9395df8064ef374954a81b9e36f5278d3/xmake/modules/detect/sdks/find_qt.lua#L232

Issues-translate-bot commented 4 months ago

Bot detected the issue body's language is not English, translate it automatically.


To support it, you need to improve this and set the host exec path.

https://github.com/xmake-io/xmake/blob/c8e8b6c9395df8064ef374954a81b9e36f5278d3/xmake/modules/detect/sdks/find_qt.lua#L223 https://github.com/xmake-io/xmake/blob/c8e8b6c9395df8064ef374954a81b9e36f5278d3/xmake/modules/detect/sdks/find_qt.lua#L232

Wzshun commented 4 months ago

那部分分支 不是针对Qt6吗?我看了下qt在处理这些时,都会为/get、/raw 这些重新压到一个map中,但后续使用就没那么好找他怎么用的了。。

qmakeglobals.cpp