对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
-
我使用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