2016-09-06 71 views
0

我升级Windows构建机器使用CL:命令行错误D8022:无法打开 'C:用户 ADMINI〜1 应用程序数据本地 TEMP tmpjbx8xe.lnk'

  • 的Visual Studio 2015年更新3
  • scons的2.5.0
  • 的MSBuild 14.0.25420.1

  • 的Visual Studio 2013更新4个
  • scons的2.3.4
  • 的MSBuild 12.0.31101

但我打生成错误。在 '初始' 运行构建失败,因为

CL:命令行错误D8022:不能open'c:\用户\ ADMINI〜1 \应用程序数据\本地\ TEMP \ tmpjbx8xe.lnk”

可能有几个这样的错误。如果我试图找到这些文件,我注意到它们不存在。

如果我重新运行它通过的构建。

有没有其他人遇到过这个问题?有解决方案吗?

供参考:构建在20个核心机器上并行运行。这可能会导致计时条件。但之前的设置没问题。

更新:进一步调查后,这看起来可能是一个SCons问题。 SCons似乎创建.lnk文件。它存储在这些文件中的链接命令行,并得到CL通过

CL @c执行它们:\用户\ ADMINI〜1 \应用程序数据\本地\ TEMP \ tmpjbx8xe.lnk

+0

您已经在用户邮件列表中询问了同样的商品。不太可能成为SCons问题。请检查反病毒和/或搜索索引器。 – bdbaddog

+0

发布到StackOverflow后,我学到了更多关于这个问题的知识。当我发现这些.lnk文件是特定的SCon,我发布给他们的用户邮件程序。我不确定这是否纯粹是SCons问题。我怀疑我们的构建(否则更多的人会报告这一点)。但是我已经确定了导致这个问题出现在我们的构建中的SCons的提交。 –

回答

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) 

错误消失。

相关问题