vs2015 x64编译器为例,cmake命令如下:

  1. cmake -G "Visual Studio 14 Win64" path\to\source\dir

去掉Win64,就是32bit:

  1. cmake -G "Visual Studio 14" path\to\source\dir

另外一种等价方式,用命令行参数-A来指定架构(x64或者ARM):

  1. cmake -A x64 path\to\source\dir

更多参考:

https://cmake.org/cmake/help/v3.1/manual/cmake-generators.7.html#ide-build-tool-generators

windows下如果用了cmake -G"Visual Studio 14"命令,则cmake会给你生成Visual Studio工程文件相关的文件,比如:Project.sln,这时要编译生成必须用msbuild命令,比如:

  1. msbuild Project.sln

完整步骤是:

  1. cmake -G "Visual Studio 14 Win64" path\to\source\dir
  2. msbuild Project.sln

windows nmake

windows还提供了一种构建命令:nmake。使用命令如下:

  1. cmake -G "NMake Makefiles" path\to\source\dir
  2. nmake

如果要为nmake指定x64/x86,还不清楚cmake有没相关参数设置,目前我知道的方法如下,

以vs2015为例,打开cmd,定位到Microsoft Visual Studio 14.0\VC\目录下,然后执行命令:

  1. vcvarsall.bat x64

如果要32位,就执行:vcvarsall.bat x86。

执行完后再跳转到要构建的工程目录下,接着执行:cmake -G"NMake Makefiles" path\to\source\dir,以及:nmake。这样生成出来的程序就是x86或者x64版本。

Linux

设置CFLAGS(或者CXXFLAGS)为-m32或者-m64,例如:

  1. export CFLAGS=-m32

Mac OSX

32 bit

  1. cmake -DCMAKE_OSX_ARCHITECTURES=i386 /path/to/source/dir

64 bit

  1. cmake -DCMAKE_OSX_ARCHITECTURES=x86_64 /path/to/source/dir will compile

96-bit universal

  1. cmake "-DCMAKE_OSX_ARCHITECTURES=x86_64;i386" /path/to/source/dir

参考:

http://stackoverflow.com/questions/5334095/cmake-multiarchitecture-compilation

cmake构建时指定编译器架构(x86 or x64)的更多相关文章

  1. cmake编译(编译目标)x86或x64

    if(CMAKE_CL_64)    #CMAKE的内建变量,如果是true,就说明编译器的64位的,自然可以编译64bit的程序 set(ADDRESS_MODEL 64) set(NODE_TAR ...

  2. mac book pro macOS10.13.3安装qt、qt creator C++开发环境,qt5.11.1,并解决cmake构建:qt mac this file is not part of any project the code

    因为之前在Ubuntu下使用的是qtcreator开发,现在想在mac上装一个系统,因为许久未装了,还是花了点时间,不如写个博客,下次就更快安装了.在Mac OS X下使用Qt开发,需要配置Qt库和编 ...

  3. cmake编译opencv时指定cuda版本

    之前有网友提问说,基于cmake编译时如果切换cuda版本,比如我同时装了cuda8和cuda9,opencv总是找到cuda9,我想用cuda8怎么办?实际上,手头上要配置的工程是基于opencv3 ...

  4. 所生成项目的处理器架构“MSIL”与引用“***”的处理器架构“x86”不匹配。这种不匹配可能会导致运行时失败。请考虑通过配置管理器...

    警告:所生成项目的处理器架构“MSIL”与引用“***”的处理器架构“x86”不匹配.这种不匹配可能会导致运行时失败.请考虑通过配置管理器更改您的项目的目标处理器架构,以使您的项目与引用间的处理器架构 ...

  5. 在 linux 下使用 CMake 构建应用程序

    学习cmake http://xwz.me/wiki/doku.php?id=cmake 碰到的一些问题: 1.You have changed variables that require your ...

  6. 用 cmake 构建Qt工程(对比qmake进行学习)

    cmake vs qmake qmake 是为 Qt 量身打造的,使用起来非常方便 cmake 使用上不如qmake简单直接,但复杂换来的是强大的功能 内置的 out-of source 构建.(目前 ...

  7. NDK(23) 使用CMake 构建 c/c++代码库

    1.官网 https://developer.android.com/studio/projects/add-native-code.html 2.android studio 安装相关工具 在打开的 ...

  8. 使用VSCode和CMake构建跨平台的C/C++开发环境

    日前在学习制作LearnOpenGL教程的实战项目Breakout游戏时,希望能将这个小游戏开发成跨平台的,支持在多个平台运行.工欲善其事必先利其器,首先需要做的自然是搭建一个舒服的跨平台C/C++开 ...

  9. LLVM编译器架构

    LLVM编译器架构 LLVM概述 LLVM项目是模块化和可重用的编译器及工具链技术的集合.尽管名称如此,LLVM与传统虚拟机关系不大.名称" LLVM"本身不是缩写.它是项目的全名 ...

随机推荐

  1. 线程安全的CopyOnWriteArrayList介绍

    证明CopyOnWriteArrayList是线程安全的 先写一段代码证明CopyOnWriteArrayList确实是线程安全的. ReadThread.java import java.util. ...

  2. c++中几种常见的类型转换。int与string的转换,float与string的转换以及string和long类型之间的相互转换。to_string函数的实现和应用。

    1.string转换为int a.采用标准库中atoi函数,对于float和龙类型也都有相应的标准库函数,比如浮点型atof(),long型atol(). 他的主要功能是将一个字符串转化为一个数字,在 ...

  3. 最近IOS10.2.1 iphone6 无法通过appStore 来更新 下载任何APP。好烦啊。

    今天打开爱思助手,查看事实日志,发现了原因: Mar :: iPhone6 appstored(StoreServices)[] <Notice>: SSSQLiteDatabase: C ...

  4. 1.1 lambda表达式

    一.处理匿名内部类 1.Runnable接口 new Thread(new Runnable() { public void run() { System.out.println("hell ...

  5. postgresql ltree类型

    最近一个月使用Postgresql的时候,经常遇到ltree的数据,感觉有些别扭,可是有绕不过去.今天决心整理一下,以后使用方便一些. 一.简介 ltree是Postgresql的一个扩展类型,由两位 ...

  6. Spark GraphX实例(3)

    7. 图的聚合操作 图的聚合操作主要的方法有: (1) Graph.mapReduceTriplets():该方法有一个mapFunc和一个reduceFunc,mapFunc对图中的每一个EdgeT ...

  7. java.awt.headless 模式

    1. 什么是 java.awt.headless? Headless模式是系统的一种配置模式.在系统可能缺少显示设备.键盘或鼠标这些外设的情况下可以使用该模式. 2. 何时使用和headless mo ...

  8. 3728 联合权值[NOIP 2014 Day1 T2]

    来源:NOIP2014 Day1 T2 OJ链接: http://codevs.cn/problem/3728/ https://www.luogu.org/problemnew/show/P1351 ...

  9. redis优化配置和redis.conf说明(转)

    1. redis.conf 配置参数: #是否作为守护进程运行 daemonize yes #如以后台进程运行,则需指定一个pid,默认为/var/run/redis.pid pidfile redi ...

  10. 【Windows】Dos中的日期的和时间

    在Dos中,我们可以通过动态变量DATE来取得当前日期,通过动态变量TIME来取得当前日期.实例1 C:\Users\hubin5>echo %date% 2013/03/11 周一 C:\Us ...