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)在 ...
随机推荐
- 15.9,python操作redis集群
上代码 .对redis的单实例进行连接操作 python3 >>>import redis >>>r = redis.StrictRedis(host=, db ...
- WCF入门一[WCF概述]
一.什么是WCF WCF是使用托管代码建立和运行面向服务(Service Oriented)应用程序的统一框架.它使得开发者能够建立一个跨平台的.安全.可信赖.事务性的解决方案,且能与已有系统兼容协作 ...
- LayoutInflater.Factory 妙用
LayoutInflater.Factory 可以调试 布局,你把下面的代码放到 onCreate里面,然后再里面的下面的onCreateView里面加上断点,然后你就可以知道所有的view构造,所有 ...
- VSX-5 VSXMusic 编码听音乐
给VS写个扩展来听音乐的说法,缘来已久,这两天做了个初版,使用豆瓣FM,先发出来. 插件现在只做了VS2013的,别的版本有待下一步支持. 现在暂时只有一个Adornment(就是那个有封面的),一个 ...
- fix34
public int[] fix34(int[] nums) { int i3=0; int i4=0; int temp=0; while( (i3<nums.length)&& ...
- 《Cracking the Coding Interview》——第2章:链表——题目4
2014-03-18 02:27 题目:将一个单链表按照一个值X分为两部分,小于X的部分放在大于等于X的部分之前. 解法:按照值和X的大小,分链表为两条链表,然后连起来成一条. 代码: // 2.4 ...
- python学习笔记三:函数及变量作用域
一.定义 def functionName([arg1,arg2,...]): code 二.示例 #!/usr/bin/python #coding:utf8 #coding=utf8 #encod ...
- dynamic基元类型与隐式类型的局部变量var
dynamic代码示例 using System; using System.Collections.Generic; using System.Linq; using System.Text; na ...
- ssm项目中ueditor富文本编辑器的使用
一.下载 https://ueditor.baidu.com/website/index.html 将ueditor放到项目中合适的位置 二 . 配置文件上传路径 在utf8-jsp/jsp/conf ...
- 易语言.开源(绝地求生多功能盒子)类似LOL盒子
下载地址:https://pan.baidu.com/s/1OXwCjGJODkcZVrCwVixu3Q 成品地址:https://pan.lanzou.com/i0rmdwj