cl:命令行错误 D8022:无法打开 'c:\users\admini~1\appdata\local\temp\tmpjbx8xe.lnk'
cl : Command line error D8022 : cannot open 'c:\users\admini~1\appdata\local\temp\tmpjbx8xe.lnk'
我正在升级 Windows 构建要使用的机器
- 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
但是我遇到了构建错误。在 'initial' 运行 期间,构建因
而失败
cl : Command line error D8022 : cannot open'c:\users\admini~1\appdata\local\temp\tmpjbx8xe.lnk'
可能有多个这样的错误。如果我尝试查找文件,我会发现它们不存在。
如果我重新运行 构建它会通过。
还有其他人遇到过这个问题吗?有解决办法吗?
仅供参考:构建是 运行 在 20 台核心机器上并行进行的。这可能会导致时序条件。但是对于之前的设置来说没问题。
更新:经过进一步调查,这看起来可能是 SCons 问题。 SCons 似乎创建了 .lnk 文件。它将 link 命令行存储在这些文件中,并通过
获取 cl 来执行它们
cl @c:\users\admini~1\appdata\local\temp\tmpjbx8xe.lnk
事实证明,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)
错误消失。
我正在升级 Windows 构建要使用的机器
- 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
但是我遇到了构建错误。在 'initial' 运行 期间,构建因
而失败cl : Command line error D8022 : cannot open'c:\users\admini~1\appdata\local\temp\tmpjbx8xe.lnk'
可能有多个这样的错误。如果我尝试查找文件,我会发现它们不存在。
如果我重新运行 构建它会通过。
还有其他人遇到过这个问题吗?有解决办法吗?
仅供参考:构建是 运行 在 20 台核心机器上并行进行的。这可能会导致时序条件。但是对于之前的设置来说没问题。
更新:经过进一步调查,这看起来可能是 SCons 问题。 SCons 似乎创建了 .lnk 文件。它将 link 命令行存储在这些文件中,并通过
获取 cl 来执行它们cl @c:\users\admini~1\appdata\local\temp\tmpjbx8xe.lnk
事实证明,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)
错误消失。