msvc交叉编译:使用vcvarsall.bat设置命令行编译环境
一直以来我只知道vc设置命令行编译环境的批处理命令是%VS140COMNTOOLS%/Common7/Tools下的vsvars32.bat,(%VS140COMNTOOLS%为定义vs2015公共工具程序位置的环境变量,命令行窗口输入set就能找到,vs2010的对应定义为%VS100COMNTOOLS%)
微软的官网上有这个命令的说明:
https://technet.microsoft.com/zh-cn/library/1700bbwd.aspx
但在执行这个命令生成的命令行环境下用nmake只能编译32位版本的代码,我一直都不知道如何用nmake编译64位的代码。
今天才搞明白vsvars32.bat已经过时了,正确的打开方式是vcvarsall.bat 。
至少从vs2010开始,
%VS140COMNTOOLS%/VC下就有vcvarsall.bat,用于生成命令行编译环境。
如果要在命令行生成 32位代码,就执行vcvarsall x86
如果要在32位系统下生成64位代码,就执行vcvarsall x86_amd64
如果要在64位系统下生成32位代码,就执行vcvarsall x86或vcvarsall amd64_x86
到了VS2015,已经支持arm平台了,所以如果要生成arm平台的代码,就执行vcvarsall x86_arm 如果你的操作系统是64位的也可以 vcvarsall amd64_arm
前面一个名字代表你的当前电脑的体系结构,后面的这个名字代表你要生成的代码的体系结构。如果两个名字一样,就简化为一个名字。
搞清楚了这个,今天终于顺利在命令行下实现nmake编译32位和64位版本代码:
生成用于编译32位代码的命令行编译环境
C:\Program Files (x86)\Microsoft Visual Studio 14.0>cd VC
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC>vcvarsall x86
执行cmake生成NMake格式的Makefile,指定处理器为x86,然后执行nmake编译所有代码,并安装
>cmake -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=RELEASE -DTARGET_PROCESSOR=x86 ..\facecl
>nmake install
安装成功的输出
Install the project...
-- Install configuration: "RELEASE"
-- Installing: C:/Program Files (x86)/facecl/lib/static/detect_cl.lib
-- Installing: C:/Program Files (x86)/facecl/bin/detect_cl.dll
-- Installing: C:/Program Files (x86)/facecl/lib/static/img_tool.lib
-- Installing: C:/Program Files (x86)/facecl/bin/img_tool.dll
-- Installing: C:/Program Files (x86)/facecl/bin/test_detect.exe
-- Up-to-date: C:/Program Files (x86)/facecl/./README_utf8.txt
-- Up-to-date: C:/Program Files (x86)/facecl/include/detect_cl_types.h
-- Up-to-date: C:/Program Files (x86)/facecl/include/detect_cl.h
-- Up-to-date: C:/Program Files (x86)/facecl/include/img_tool.h
-- Up-to-date: C:/Program Files (x86)/facecl/sample/test_detect.cpp
-- Up-to-date: C:/Program Files (x86)/facecl/sample/utility.h
-- Up-to-date: C:/Program Files (x86)/facecl/sample/raii.h
-- Up-to-date: C:/Program Files (x86)/facecl/sample/assert_macros.h
-- Up-to-date: C:/Program Files (x86)/facecl/sample/cmdline.h
-- Up-to-date: C:/Program Files (x86)/facecl/sample/dirent.h
-- Up-to-date: C:/Program Files (x86)/facecl/sample/file_utilits.h
-- Up-to-date: C:/Program Files (x86)/facecl/sample/time_utilits.h
如果要在32位系统下生成64位代码,也如法炮制
关于vcvarsall.bat更详细的说明,参见微软的官方文档:
https://msdn.microsoft.com/zh-cn/library/f2ccy3wt.aspx
msvc交叉编译:使用vcvarsall.bat设置命令行编译环境的更多相关文章
- 2016/01/10 C++ Primer 小记 —— 命令行编译环境配置
OK!第一篇博文!自贺一下! 今日看了此书的前几页.嗯,说得挺全,基础易懂. 之前学过c++,但没用过命令行编译. 本人用的VS里的编译器,文件名是cl.exe,在VC目录下. 虽然有了编译器,但并不 ...
- sublimetext 创建一个php命令行编译环境
菜单栏=>工具->编译系统=>新编译系统(插入如下代码,前提是有php批处理 然后编译php ctrl+b即可) { "cmd": ["php" ...
- VS2010命令行编译C#和VC项目
VS2010命令行编译C#和VC项目 VS2010命令行编译C#和VC项目 根据需要动态创建数据库字段后,需要动态创建或者调整页面,那就需要编译这些页面和后台文件.因此使用命令行编译将会非常方便,对于 ...
- ARM 编译工具keil 和 IAR 命令行编译和下载
目的 不管是Keil还是IAR对代码补全,高亮等编辑功能支持的不是很好,虽然现在的Keil 5.25对界面的支持好了很多,但是很多人还是青睐于第三方的编辑器,命令行的编译方式可以让我们在使用第三方编辑 ...
- 如何用命令行编译c++程序
作为程序员,如果仅仅只懂得如何在IDE上拖控件写程序,而不知道如何直接通过编译器编译程序的话.虽然说也没啥大不了的,但是如果掌握了手动编译的技能,那肯定会是一种炫技般的存在.从客观的角度来讲,一方面, ...
- 基于命令行编译打包phonegap for android应用 分类: Android Phonegap 2015-05-10 10:33 73人阅读 评论(0) 收藏
也许你习惯了使用Eclipse编译和打包Android应用.不过,对于使用html5+js开发的phonegap应用,本文建议你抛弃Eclipse,改为使用命令行模式,绝对的快速和方便. 一直以来,E ...
- iOS系统提供开发环境下命令行编译工具:xcodebuild
iOS系统提供开发环境下命令行编译工具:xcodebuild[3] xcodebuild 在介绍xcodebuild之前,需要先弄清楚一些在XCode环境下的一些概念[4]: Workspace:简单 ...
- 命令行编译运行Java
首先要安装JDK,然后设置环境变量Path,添加C:\Program Files (x86)\Java\jdk1.8.0_66\bin 然后建立一个名为j.java的文件,里面加入如下代码: publ ...
- ruby中输入命令行编译sass(ruby小白)
Ruby(或cmd中)输入命令行编译sass步骤如下: (1)举例而言:首先在F盘下建立一个总文件夹,比如test文件夹:其次在该文件夹下建立html,images,js,sass等文件夹. (2)在 ...
随机推荐
- SpringMVC---web.xml配置详解
web.xml中需要配置的内容 1.配置监听器<listener> 它有两个监听器: 1). <!--配置文件加载监听器--> <listener> <lis ...
- 7 Vue.js实现loading1
1 2 3 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/filter ...
- mysql 中的基本用法,以及日期的转换
1.mysql int(10) int 类型长度4个字节,大约表示2^32数字,10代表的是显示长度,一般和FILLZERO约束一起使用,如果没有达到该长度,填充02-->000000002 m ...
- 接口&抽象类&继承&父类和子类
1.接口是什么? 接口可以理解为一个特殊的抽象类,是由全局常量和公共抽象方法组成的. 所以,如果,一个抽象类的方法都是抽象的,那么就可以通过接口的形式来表示. class 用于定义类 interfac ...
- springmvc上传图片并显示--支持多图片上传
实现上传图片功能在Springmvc中很好实现.现在我将会展现完整例子. 开始需要在pom.xml加入几个jar,分别是: <dependency> <groupId>comm ...
- 获取ubuntu中软件包的有用地址
http://us.archive.ubuntu.com/ubuntu/pool/main/g/gettext/
- C#正则表达式引发的CPU跑高问题以及解决方法
3月23日(周日)下午16:30左右,博客园主站负载均衡中的2台Web服务器CPU玩起了爬楼梯的游戏(见上图),一直爬到了接近100%.发现这个状况后,我们立即将这2台阿里云临时磁盘云服务器从负载均衡 ...
- HTML简易学习笔记
文字版地址 https://github.com/songzhenhua/github/blob/master/HTML简易学习笔记.txt
- [类和对象]4 C++ static & friend
1.静态成员变量和成员函数 思考:每个变量,拥有属性.有没有一些属性,归所有对象拥有? 1.1 静态成员变量 1)定义静态成员变量 关键字 static 可以用于说明一个类的成员 静态成员提供了一个 ...
- 在jsp页面中使用jstl标签
第一步:引入标签库 <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt"%> 第 ...