我想構建一個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