我正在升级Windows构建计算机以使用
这
但是我遇到了构建错误。在“初始”运行期间,构建因
而失败cl:命令行错误D8022:无法打开'c:\ users \ admini~1 \ appdata \ local \ temp \ tmpjbx8xe.lnk'
可能有几个这样的错误。如果我试图找到文件,我注意到它们不存在。
如果我重新运行它已经过去的构建。
还有其他人遇到过这个问题吗?有解决方案吗?
仅供参考:构建在20台核心机器上并行运行。这可能会导致时间条件。但是之前的设置很好。
更新:经过进一步调查后,这看起来可能是一个SCons问题。 SCons似乎创建了.lnk文件。它将链接命令行存储在这些文件中,并通过
获取cl来执行它们cl @c:\ users \ admini~1 \ appdata \ local \ temp \ tmpjbx8xe.lnk
答案 0 :(得分:0)
原来SCons 2.3.5引入了一个边缘案例错误。在以下提交中
https://bitbucket.org/scons/scons/commits/bad59be7270dbbe62c7868a532fad84480f95fae https://bitbucket.org/scons/scons/commits/9aa37cd21e99eb684ab6ae8f7b21e0a71751ac7f https://bitbucket.org/scons/scons/commits/da5785c5f30f852734b3f985b798a5508bfea9db
在进一步调查之后,我发现故障只发生在构建脚本的一个部分。他们正在做类似
的事情# Get all the .cpp files
sources = getAllSources()
# Create a group of .obj files from the sources
objFiles = envLocal.Object(sources)
# Create a shared library from the sources
artifacts = envLocal.SharedLibrary('Library', sources)
# Add the .obj files to the link path on another environment
envTest['LIBS'].append(objFiles)
test_sources = getAllSources() # Get all the test .cpp files
# Create a test executable which re-uses the .obj files from LIBS on another environment
envTest.Program('TestExecutable', test_sources)
当我将代码更新为
时# Create a shared library from the objFiles instead of sources
artifacts = envLocal.SharedLibrary('Library', objFiles)
错误消失了。