-
-
Notifications
You must be signed in to change notification settings - Fork 785
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
多target的项目中,使用add_shflags("/NOENTRY")的纯资源动态库项目会对其它shared项目产生影响 #5360
Comments
跟 noentry 没任何关系,是你新增的 由于 rc target 没加 cpp files,它的 linker flags 没走 c++ linker 的加载逻辑,而 load linker 内部有缓存,跟另外一个 c++ target 的 linker flags 缓存冲突干扰了。。 我改进了下缓存的 key ,应该可以了。。这种情况只发生在纯 rc target 没任何 cpp files 的情况。
|
实测已经修正 |
The actual measurement has been corrected |
Xmake 版本
2.9.3
操作系统版本和架构
windows 11 23H2
描述问题
这个算是一个持续了两年的问题,之前的讨论中发现了这个问题,但是当时一来没分析到点子上,二来没几天工作就忙起来了(xmake相关只是我的业余爱好涉及),然后一拖就完全忘了这回事。直到这几天重新写了这个东西,然后发现了相同的问题,最后发现自己两年前就已经写过这东西,两年前就发现这个问题……废话不多说了,今天大概大脑转对了方向,终于发现了真正的问题所在:
最简单的项目:
xmake.lua
main.cpp
soui-sys-resource.rc
resource.h
这就是一个最小的项目
然后:
期待的结果
可以看到,上面两个项目之间互相没有依赖关系,应该互不影响才对。两个项目分别独立编译,也是没有问题的。
但是,分别编译上面两个项目之后,紧接着xmake,炸了。
然后我再修改一下,
1.main.cpp复制一份,命名为main1.cpp,并且去掉MessageBox,这是为了不引用User32
2.target("res")中去掉add_shflags("/NOENTRY"),将main1.cpp加入编译
然后重新编译,结果一切正常。证明问题就在noentry这里
工程配置
--
附加信息和错误日志
然后是错误相关的详细日志
和两年前的结果一致,反正就是User32.lib没有传给link.exe
而单独编译时:
非常稳定地重现了。
最后注意到我使用xmake b --help时
在我手动编译两个项目之后,xmake b -a还准备干啥?
The text was updated successfully, but these errors were encountered: