Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
qiu-hao opened this issue Sep 8, 2019 · 15 comments
Milestone

Comments

@qiu-hao
Copy link

qiu-hao commented Sep 8, 2019

开发者们,你们好,我在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
Copy link
Member

waruqi commented Sep 8, 2019

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

gui程序分成两个rules

  • qt.widgetapp
  • qt.quickapp

只有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

@waruqi waruqi added this to the v2.2.9 milestone Sep 8, 2019
@qiu-hao
Copy link
Author

qiu-hao commented Sep 8, 2019

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

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

@waruqi
Copy link
Member

waruqi commented Sep 9, 2019

深夜更新,辛苦你们了,我早上测试了一下 创建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
Copy link
Author

qiu-hao commented Sep 9, 2019

开发者们,你们好,刚才我更新了一下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
Copy link
Member

waruqi commented Sep 9, 2019

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

@qiu-hao
Copy link
Author

qiu-hao commented Sep 9, 2019

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

@waruqi
Copy link
Member

waruqi commented Sep 9, 2019

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

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

@qiu-hao
Copy link
Author

qiu-hao commented Sep 9, 2019

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
Copy link
Member

waruqi commented Sep 9, 2019

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

xmake update -s github:xmake-io#dev

@qiu-hao
Copy link
Author

qiu-hao commented Sep 9, 2019

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
Copy link
Member

waruqi commented Sep 9, 2019

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

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

target:add("ldflags", "-Wl,-subsystem:windows", {force = true})

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

@qiu-hao
Copy link
Author

qiu-hao commented Sep 9, 2019

嗯,好的

@waruqi
Copy link
Member

waruqi commented Sep 9, 2019

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

@qiu-hao
Copy link
Author

qiu-hao commented Sep 9, 2019

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

@waruqi
Copy link
Member

waruqi commented Sep 9, 2019

ok

@waruqi waruqi closed this as completed Sep 9, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants