普通Windows控制台視窗運行nmake編譯VC

來源:互聯網
上載者:User

我的GDAL編譯都是在VS2012提供的prompt windows裡面運行nmake完成的。但是如果想將編譯自動化,放到Jenkins裡面怎麼辦呢?首先沒有VS2012的工程,也不想費力去產生一個,那是繞圈。其實只需要解決一個問題,為什麼不能在普通的windows command prompt視窗運行nmake。

那是因為nmke的路徑沒有載入環境變數裡面,好吧,那就手動加到PATH中。繼續,因為最終nmake讀取makefile.vc檔案,產生的還是cl和link指令. cl需要include目錄路徑,要加進去,link需要依賴庫的路徑,要加進去。這就是為什麼要在VS2012提供的prompt windows裡面運行nmake的原因,因為它都幫你做了。如果是編譯64bit的程式,還需要開啟專門為64bit提供的VS2012 prompt windows,因為這些路徑有些微變化。

理論說完了,怎麼做呢?作為一個指引,推薦看一篇文章:http://bojan-komazec.blogspot.com/2011/10/nmake-and-its-environment.html

這篇文章很好,耐心的解釋了我剛才說的那些為什麼不work的原因。然後也提供了作者自己的bat檔案,該bat檔案運行後,就設定了正確的環境變數。不過他的不支援VS2012,我拿過來後加以修改。下面是我的vc_env.bat檔案:

@rem modifed by Dean Chen to only support Visual Studio 2012 x86/x64 tools, initial version from http://bojan-komazec.blogspot.com/2011/10/nmake-and-its-environment.html @echo off@if "%1"=="x86" goto set_x86@if "%1"=="x64" goto set_x64@if "%1"=="" goto error:set_x86@echo Setting environment for using Microsoft Visual Studio 2012 x86 tools.set INCLUDE=^C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\INCLUDE;^C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\ATLMFC\INCLUDE;^C:\Program Files (x86)\Windows Kits\8.0\include\shared;^C:\Program Files (x86)\Windows Kits\8.0\include\um;^C:\Program Files (x86)\Windows Kits\8.0\include\winrt;set LIB=^C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\LIB;^C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\ATLMFC\LIB;^C:\Program Files (x86)\Windows Kits\8.0\lib\win8\um\x86;set PATH=^%SystemRoot%\system32;^C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin;^C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE;^C:\Program Files (x86)\Windows Kits\8.0\bin\x86;goto test_bin_locations:set_x64@echo Setting environment for using Microsoft Visual Studio 2012 x64 tools.set INCLUDE=^C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\INCLUDE;^C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\ATLMFC\INCLUDE;^C:\Program Files (x86)\Windows Kits\8.0\include\shared;^C:\Program Files (x86)\Windows Kits\8.0\include\um;^C:\Program Files (x86)\Windows Kits\8.0\include\winrt;set LIB=^C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\LIB\amd64;^C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\lib\amd64;^C:\Program Files (x86)\Windows Kits\8.0\lib\win8\um\x64;set PATH=^%SystemRoot%\system32;^C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\amd64;^C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE;^C:\Program Files (x86)\Windows Kits\8.0\bin\x64;goto test_bin_locations:test_bin_locations@echo onwhere nmakewhere cl.exewhere link.exe@echo offgoto:eof:error@echo Usage: setenv.bat [x86^|x64]goto:eof

注意,沒有什麼是完全不變的。我還是做了些補充,比如原作者的環境變數設定不支援Windows Kits,我加上了。否則GDAL編譯會報錯,有個程式找不到。

怎麼解決呢,授人以漁才是正解。

1. 開啟VS2012提供的prompt windows, 用env顯示所有環境變數

2. 用everything搜尋程式,看路徑在哪裡,找出來後添加到PATH變數中

3. 還有VS 2012呢,可以通過一個已有的VS2012工程尋找找不到的標頭檔。 第三點其實一般用不著,但是比較適合離不開IDE的程式員。

好了,現在如何在Jenkins中編譯呢,很簡單,用 & 寫成一行就行了。在Jenkins build Projecte配置頁面裡面,最後添加上一個配置

Execute Windows Batch Command:

c:\\vc_env.bat x86 & cd codes\\deps\\gdal\\gdal_1.8_rtc & nmake -f makefile.vc

原作者還有一篇介紹如何用namek來建立VC工程的文章,推薦一看:

http://bojan-komazec.blogspot.com/2011/10/how-to-use-nmake-and-makefile.html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.