普通Windows控制台窗口运行nmake编译VC
2013-08-20 20:14
555 查看
我的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文件:
注意,没有什么是完全不变的。我还是做了些补充,比如原作者的环境变量设置不支持Windows Kits,我加上了。否则GDAL编译会报错,有个程序找不到。
怎么解决呢,授人以渔才是正解。
1. 打开VS2012提供的prompt windows, 用env显示所有环境变量
2. 用everything搜索程序,看路径在哪里,找出来后添加到PATH变量中
3. 还有VS 2012呢,可以通过一个已有的VS2012工程查找找不到的头文件。 第三点其实一般用不着,但是比较适合离不开IDE的程序员。
好了,现在如何在Jenkins中编译呢,很简单,用 & 写成一行就行了。在Jenkins build Projecte配置页面里面,最后添加上一个配置
Execute Windows Batch Command:
原作者还有一篇介绍如何用namek来创建VC工程的文章,推荐一看:
http://bojan-komazec.blogspot.com/2011/10/how-to-use-nmake-and-makefile.html
那是因为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 on where nmake where cl.exe where link.exe @echo off goto: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
相关文章推荐
- 普通Windows控制台窗口运行nmake编译VC
- 隐藏控制台程序运行时的窗口(Windows API ShowWindow的应用)
- windows游戏开发中一个关于Visual Studio的编译链接成功,输出窗口却显示线程已退出。无法运行项目的问题
- 用VC2013编译了一个程序,在Windows 8、Windows 7(64位、32位)下都能正常运行。但在Win XP,Win2003下运行时,却报错不能运行
- 在文件夹中 的指定类型文件中 查找字符串(CodeBlocks+GCC编译,控制台程序,仅能在Windows上运行)
- 《C++Primer》读书笔记之---Windows下通过命令行窗口编译运行C++程序的尝试
- 控制台下NMAKE编译WIN32/VC/MFC程序步骤
- windows中控制台窗口和普通窗口有什么区别?
- windows环境中使用VC的nmake和makefile编译c++程序
- Subline text3 配置java程序编译运行在subline控制台环境和windows控制台
- windows下使用vc2008编译librtmp
- 如何在VS2010中运行控制台程序时停留在控制台显示窗口
- 深入浅出话VC++(1)——Windows程序内部运行机制
- Windows下无窗口后台运行程序: ShellExecute
- VC开一个控制台窗口用于输出
- windows交叉编译程序在树莓派运行不了
- vs2010 vc nmake编译openssl-0.9.8e
- VC新版本编译的程序如何在老系统上运行
- Windows+VS2013下Boost1.59编译运行
- windows 7 x64安装openssl,使用vs2012命令nmake编译