xmake-io / xmake

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

关于Qt 在qt.application xmake build 时会默认链接Qt5Qml 如何设置不连接? #570

Closed qiu-hao closed 5 years ago

qiu-hao commented 5 years ago

开发者们,你们好,我在window10 系统下使用 mingw gcc9.0 x86_64版本编译了 Qt 5.12.4的Base 模块 默认是没有QML的 我在VSCode 下 配合Xmake 开发Qt界面,在xmake.lua文件中

add_rules(qt.application)时会默认链接Qt5Qml 程序在 add_rules(qt.console)时是可以运行的,不依赖Qt5Qml 请问 在qt.application下有什么方法取消默认链接Qt5Qml?

waruqi commented 5 years ago

qt.application确实会附带qml framework,我现在做了拆分。

gui程序分成两个rules

只有add_rules("qt.quickapp")程序才会自动设置qml framework,而add_rules("qt.widgetapp") 不会。。

如果你没用到qml去写gui,可以试试 仅仅设置 add_rules("qt.widgetapp") 而qt.application为了向下兼容,目前还是会保留,适配到 qt.quickapp

你更新下dev分支代码试试,xmake update -s dev

qiu-hao commented 5 years ago

深夜更新,辛苦你们了,我早上测试了一下 创建qt.widgetapp 模板 可以运行,但是在qt.widgetapp rules下那个控制台还存在,那个好像应该隐藏吧

还有就是自V2.2.8开始在win10 powershell中使用xmake create命令,创建成功后,输出信息 create ok!后面显示是方框,好像是乱码了

waruqi commented 5 years ago

深夜更新,辛苦你们了,我早上测试了一下 创建qt.widgetapp 模板 可以运行,但是在qt.widgetapp rules下那个控制台还存在,那个好像应该隐藏吧

我尝试改了下,之前只对msvc工具链设置了-entry:mainCRTStartup入口,mingw的没有,你更新下dev后再试试

还有就是自V2.2.8开始在win10 powershell中使用xmake create命令,创建成功后,输出信息 create ok!后面显示是方框,好像是乱码了

这块是由于2.2.8默认放开了emoji显示,这在部分win terminal上也许还不支持显示,dev上我加了个开关来控制,你可以设置 XMAKE_COLORTERM_NOEMOJI=y 环境变量来禁用emoji显示

qiu-hao commented 5 years ago

开发者们,你们好,刚才我更新了一下Xmake,xmake build后出错了 PS D:\MyProjects\VisualStudioCode\Cplusplus\PracticeProject\SetParts> xmake clean PS D:\MyProjects\VisualStudioCode\Cplusplus\PracticeProject\SetParts> xmake build [ 0%]: compiling.qt.ui src\aboutsoft.ui [ 0%]: compiling.qt.ui src\mainwindow.ui [ 59%]: compiling.release src\mainwindow.cpp [ 39%]: compiling.release src\main.cpp [ 79%]: compiling.qt.moc src\mainwindow.h [100%]: linking.release SetParts.exe error: g++: error: unrecognized command line option '-subsystem:windows'

关于隐藏控制台,我之前在qt.application rules下 在xmake -v 看到有个-fvisibility=hidden 是不是隐藏控制台窗口的,或者你可以参考QtCreator 中qmake的构建Qt 程序只有界面,没有控制台窗口

waruqi commented 5 years ago

跟 -fvisibility=hidden 那个没啥关系,我更新了下 你再update dev后试试

qiu-hao commented 5 years ago

更新后,依然出现 error: g++: error: unrecognized command line option '-subsystem:windows'

waruqi commented 5 years ago

更新后,依然出现 error: g++: error: unrecognized command line option '-subsystem:windows'

这个flags之前就一直在的,之前没报错? 你敲 -v 编译给我看下完整链接命令

qiu-hao commented 5 years ago

rojects\VisualStudioCode\Cplusplus\PracticeProject\SetParts> xmake update -s dev update version dev from official source .. => download https://gitee.com/tboox/xmake.git .. ok => install script to C:\Program Files\xmake .. ok PS D:\MyProjects\VisualStudioCode\Cplusplus\PracticeProject\SetParts> xmake build [ 0%]: compiling.qt.ui src\aboutsoft.ui [ 0%]: compiling.qt.ui src\mainwindow.ui kind = static bin = C:\mingw\bin theme = default plat = mingw qt = C:\Qt\5.12.4-mingw-x64 } [100%]: linking.release SetParts.exe C:\\mingw\\bin\\g++ -o build\\mingw\\x86_64\\release\\SetParts.exe build\\.objs\\SetParts\\mingw\\x86_64\\release\\src\\main.cpp.obj build\\.objs\\SetParts\\mingw\\x86_64\\release\\src\\mainwindow.cpp.obj build\\.objs\\SetParts\\mingw\\x86_64\\release\\gens\\rules\\qt\\moc\\moc_mainwindow.cpp.obj -LC:\\\\Qt\\\\5.12.4-mingw-x64\\\\lib -s -fvisibility=hidden -lQt5Widgets -lQt5Gui -lQt5Core -lmingw32 -lQt5AccessibilitySupport -lQt5AccessibilitySupportd -lQt5Bootstrap -lQt5Concurrent -lQt5Concurrentd -lQt5Cored -lQt5DBus -lQt5DBusd -lQt5DeviceDiscoverySupport -lQt5DeviceDiscoverySupportd -lQt5EdidSupport -lQt5EdidSupportd -lQt5EventDispatcherSupport -lQt5EventDispatcherSupportd -lQt5FbSupport -lQt5FbSupportd -lQt5FontDatabaseSupport -lQt5FontDatabaseSupportd -lQt5Guid -lQt5Network -lQt5Networkd -lQt5PrintSupport -lQt5PrintSupportd -lQt5Sql -lQt5Sqld -lQt5Test -lQt5Testd -lQt5ThemeSupport -lQt5ThemeSupportd -lQt5Widgetsd -lQt5WindowsUIAutomationSupport -lQt5WindowsUIAutomationSupportd -lQt5Xml -lQt5Xmld -lqtfreetype -lqtfreetyped -lqtlibpng -lqtlibpngd -lqtmain -lqtmaind -subsystem:windows -entry:mainCRTStartup -m64 error: g++: error: unrecognized command line option '-subsystem:windows'

昨天深夜你更新的那个就没有出错

waruqi commented 5 years ago

哦 你从gitee更新的dev,我刚没环境,只在web上改了github的。。你强制从github更新dev吧。。gitee的还没更新

xmake update -s github:xmake-io#dev

qiu-hao commented 5 years ago

xmake update -s github:xmake-io#dev
用不了 `error: ssh: Could not resolve hostname github: Name or service not known fatal: Could not read from remote repository.

Please make sure you have the correct access rights and the repository exists.`

我用git clone -b dev https:/github.com/xmake-ip/xmake.git 下载了dev版本 然后覆盖C:\Program files\xmake中的文件 xmake build没问题 但是 xmake run 出现 PS D:\MyProjects\VisualStudioCode\Cplusplus\PracticeProject\SetParts> xmake run error: execv(D:\MyProjects\VisualStudioCode\Cplusplus\PracticeProject\SetParts\build\mingw\x86_64\release\SetParts.exe) failed(4198400)!

程序本来是可以运行的,现在不能运行了 使用 xmake create -l c++ -t widgetapp_qt test 创建了新的项目,运行还是出现上述错误

waruqi commented 5 years ago

哦,那看来跟msvc那样加 -Wl,-entry:mainCRTStartup 还不一定行,我先还原回去了,等回头我有mingw环境了,再给你看看吧,现在身边没mingw环境,也没时间细致调试。。或者等晚上再看看吧。。

如果你有时间,也可以自己修改下安装目录下相关源码,尝试做些修改:

https://github.com/xmake-io/xmake/blob/3333ef1226c64ad71a4a26fbfbba24bd50616e46/xmake/rules/qt/load.lua#L239

刚敲错了,xmake update -s github:xmake-io/xmake#dev 应该是这个。。

qiu-hao commented 5 years ago

嗯,好的

waruqi commented 5 years ago

你又改了下,你再更新下dev试试

qiu-hao commented 5 years ago

佩服您这股子钻研精神,试了dev,好用了,控制台窗口隐藏了

waruqi commented 5 years ago

ok