2016-09-06 23 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) 

錯誤消失。

相關問題