2012-10-22 68 views
4

我已將Microsoft Visual Studio配置爲使用Makefile配置類型,並且我已經編寫了一個makefile以使用Microsoft工具構建我的項目。在我設置的命令行構建項目配置的NMAKE部分被BUILD.BAT,這是一種簡單的調用NMAKE與我的makefile作爲命令行參數,像這樣一個文件:Microsoft Visual Studio 2010不將生成工具放在PATH中用於乾淨目標?

nmake /nologo /f makefile.x86.winnt.msvc2010 

這只是工作精細。

爲了清理,我在我的makefile中寫了一個目標,它刪除了所有的構建工件。它看起來像這樣:

#... the rest of the makefile 
clean: 
    @erase /f /q $(OBJS) $(OUT) $(MAPFILE) $(PDBFILE) 
    @echo + clean 

因此,我設置乾淨的命令行是一個乾淨的nmake調用作爲參數。就像這樣:

nmake /nologo /f makefile.x86.winnt.msvc2010 clean 

我把這個文本的clean.bat並將其設置爲「清潔命令行」,但它不能正常工作,因爲調用shell不能找到NMAKE。我在乾淨的調用時檢查了路徑,並且MSVS不包括路徑(包括nmake)中的構建工具進行清理。 (請注意,從PATH中有nmake的shell運行上述nmake命令會成功)。

我該如何讓MSVS在PATH中包含構建工具,以便我可以在乾淨的命令行中調用nmake?還是有更好的解決方案?

+2

我發誓更好的解決方案是不能在Windows上開發!我一直在VS2010中遇到類似的問題。 – Dan

+0

@Dan我正在從Linux開展大部分開發工作,但該項目是跨平臺的,客戶需要Windows版本。否則我不會打擾。 –

+0

我處於同樣的困境中。試圖在Windows上構建開源軟件簡直太可笑了!如果可以的話,我會使用Cygwin,但不幸的是,這不是一個選項:(我在Ubuntu上花費了很多時間來做一個單獨的'apt-get'行。 – Dan

回答

4

Visual Studio Express Readme報價:

2. Known Issues

2.4. Product Issues

2.4.1. General Issues (Product)

2.4.1.14. Clean Solution does not work for Configuration Type: Makefile (2010 RC)

Doing "Clean Solution" on an nmake solution reports the following error:

1>------ Clean started: Project: makefiletest, Configuration: Debug Win32 ------ 
1> 'nmake' is not recognized as an internal or external command, 
1> operable program or batch file. 
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.MakeFile.Targets(33,5): 
    error MSB3073: The command "nmake /?" exited with code 9009. 
================= Clean: 0 succeeded, 1 failed, 0 skipped ========== 

To resolve this issue:

  1. Open the Visual Studio Command Prompt window.
  2. Open Devenv by typing devenv /useenv .
  3. Now "Clean Solution" should work.

Or:

Pass a batch file to the clean command. In the batch file, set up PATH to the nmake tool as well as the other build environment.

+0

哇。所以沒有實際的解決方案。可愛。 –

+0

是的和「專業」版本有相同的問題! – Dan

+0

我試圖通過使用NodeJS和PhantomJS來發現它仍然需要這個垃圾工作!時間到Ubuntu和VMWare什麼Windows垃圾我卡住不得不使用。 – Shane

3

當然你是對的,MSVC從來沒有把它的構建工具放在路徑上!所以,你這裏有兩種選擇:

  • 您運行批處理文件從內部VisualStudio的命令提示符

  • 添加%ProgramFiles%\Microsoft Visual Studio 10.0\VC\vcvarsall.bat開始您的批處理文件中所要求的路徑添加到PATH。

+0

其中的第二個爲我工作..當我在安裝Windows 8.1後無法編譯時,我證實我已經完成了它,然後注意到我的系統PATH = envinronment變量中的路徑語句搞砸了,但是在升級之前沒有嘗試過構建。謝謝! –

0

我想一個更好的解決辦法是增加set PATH=$(VSInstallDir)\BC\bin;%PATH%到您的批處理文件的開始。

如果將來升級到VS2012(或更高版本),這應該是未來防禦版本。

+0

問題是由visual studio創建的shell沒有正確的初始化環境,所以當VS運行單行shell命令來調用使用nmake(微軟的gmake變體)的外部託管構建時,它無法找到nmake可執行文件並且構建失敗。該命令需要長爲一行的約束可防止環境突變和腳本執行,AFAIK。另外,還有其他的變數需要設置才能運行。丹的回答是唯一可行的解​​決方案,因爲它覆蓋了有問題的環境管理。 –

+0

要說服你自己,請在Windows命令提示符下運行以下命令兩次。 set FOO = BAR && echo%FOO% –

相關問題