对deps目标的link过程中丢失了参数,疑似bug,但是不确定,先请鉴定一下 #2572
Replies: 2 comments 2 replies
-
你这个也太邪门了吧 |
Beta Was this translation helpful? Give feedback.
2 replies
-
多年后的回复,已经修正!! |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
我使用xmake重写soui的编译脚本过程中发现的,原项目比较复杂,不好直接提取。然后我按照原项目的结构写了个简单的编译,但是又没重现,因此虽然想提issue,但是发现自己没法提供准确的信息,无从下手。
我通过在xmake的脚本里面加print的方法找到的关键点比较令人迷惑。
原编译脚本,没写完,先写了个能编译的东西,有部分target略去了,主要是展示结构。我自己反复查看,没看出有啥问题
问题出在utilities4的编译上。如果
或是直接
是能够正常生成dll文件的。
[ 96%]: linking.release utilities4.dll "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Tools\\MSVC\\14.29.30133\\bin\\HostX64\\x64\\link.exe" -dll -nologo -machine:x64 -libpath:bin png.lib zlib.lib user32.lib gdi32.lib -out:bin\utilities4.dll build\.objs\utilities4
但是如果
问题就出现了
注意到,两次编译的命令中,错误的部分少了参数。
我反复验证和查看文档,没发现自己的配置写法有任何问题。所以我最后开始在lua文件里面添加prinf来查看问题。
我沿着调用栈一层层地往上查,在关键的target处打印日志:
最后跟踪到文件\actions\build\kinds\shared.lua
当我在函数
function _link_target(target, opt)
开始添加上述代码时,
输出为:
checking for the static library archiver (ar) ... link.exe target: main:utilities4 k:1,v:-nologo k:2,v:-machine:x64
可以看到,这里的参数已经缺失了。编译结果毫不意外地报告缺少符号。
然后我把代码再移到上一层调用,到了function main(batchjobs, rootjob, target),修改后的代码如下:
神奇的情况出现了,utlities4.dll居然正常编译通过
编译脚本没写完,所以demo的编译是失败的。但是可以看到,utilities4的编译居然正常了。
而你可以看到,我添加的输出代码不会修改任何值,但是最终却产生了预期之外的变化。上面这个情况不是偶发,我从前天到今天测了三个晚上,稳定重现。
版本:
xmake v2.6.8+HEAD.e18471251, A cross-platform build utility based on Lua
如果可以的话,我可以按这个提一个issue,但是目前按照原项目的结构没捣鼓出一个可重现的例子,这个issue就比较艰难了。
Beta Was this translation helpful? Give feedback.
All reactions