我想构建一个VS.sln,它有多个C++ .vcproj。解决方案文件是使用CMake生成的,我在Jenkins中使用了这部分工作(使用CMake builder插件)。为了构建解决方案文件,我使用了msbuild。我能够建立使用Visual Studio和在命令行中使用以下命令解决方法:Msbuild通过VS和命令行工作,但通过詹金斯失败
C:\Jenkins\workspace\SonioTest>"C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe" /t:Rebuild bin/SonIO.sln
这成功生成(即詹金斯驻留在同一台机器上)。
但是,我试图在Jenkins中自动化构建的这部分,并且构建最终失败了几个C1083
错误("Cannot open source file: '..\path\to\file.ext': No such file or directory
)。我已经尝试使用Jenkins msbuild插件,并使用与终端中相同的命令作为“执行Windows批处理命令”构建步骤,结果相同。
使用Windows批处理命令生成步骤,我可以在日志中看到,正在执行的命令:
C:\Jenkins\workspace\SonioTest>"C:\Windows\Microsoft.NET\Framework\v4.0.30319 msbuild.exe" /t:Rebuild bin/SonIO.sln
...是完全一样的命令行工作的一个,包括的工作目录。
我正在运行Jenkins作为服务,并且我的服务登录为我的帐户(具有管理员权限)。任何人都知道詹金斯将执行批处理命令的目录是什么?
任何想法,为什么我看到詹金斯和命令行之间的这种行为差异?
我认为你必须使用一个占位符,就像%WORKSPACE% – 2013-02-11 14:42:39
指定到您的解决方案的绝对路径我已验证该命令由Jenkins从同一个工作目录运行。您的评论是否仍然适用?我不是100%确定你的意思。 – Kohanz 2013-02-11 15:00:47