概述

  • 本文演示环境: win10 + VS2017

1.指定变量值

咱们常用命令【cmake ..】在build目录下配置生成项目和解决方案。 其实,这个命令还有其他用法。

指定CMakeLists.txt中的变量值。比如 , fmt 库 的CMakeLists.txt中有一个变量 【BUILD_SHARED_LIBS】,可以在命令行指定其值:

cmake -DBUILD_SHARED_LIBS=TRUE ..

对比可知,多了中间指定变量的命令, 其他没有变化。

2.指定编译器版本

使用命令: cmake -G 可知当前cmake支持的编译器

 1   Visual Studio 16 2019        = Generates Visual Studio 2019 project files.
2 Use -A option to specify architecture.
3 Visual Studio 15 2017 [arch] = Generates Visual Studio 2017 project files.
4 Optional [arch] can be "Win64" or "ARM".
5 Visual Studio 14 2015 [arch] = Generates Visual Studio 2015 project files.
6 Optional [arch] can be "Win64" or "ARM".
7 Visual Studio 12 2013 [arch] = Generates Visual Studio 2013 project files.
8 Optional [arch] can be "Win64" or "ARM".
9 Visual Studio 11 2012 [arch] = Generates Visual Studio 2012 project files.
10 Optional [arch] can be "Win64" or "ARM".
11 Visual Studio 10 2010 [arch] = Generates Visual Studio 2010 project files.
12 Optional [arch] can be "Win64" or "IA64".
13 Visual Studio 9 2008 [arch] = Generates Visual Studio 2008 project files.
14 Optional [arch] can be "Win64" or "IA64".
命令行,需要给cmake 传递参数 -G   指定编译器的一个例子如下,这里,指定VS2017为例
cmake -G "Visual Studio 15 2017 " ..

该命令将默认生成32位程序

  注意: 【..】前面有空格

-【扩展】

  Linux或者Unix,我经常使用Clang(++) 构建我的程序,通常会在CMakeLists.txt文件最前面project 添加下面的两行,且一定要放在project之前

SET(CMAKE_C_COMPILER /usr/bin/clang)
SET(CMAKE_CXX_COMPILER /usr/bin/clang++)

3.指定指定生成64位的配置命令

上面显示Vs的版本已经说明了参数格式: Visual Studio 9 2008 [arch] 。 这里的 [arch] 就是需要指定的平台目标。

  一个例子帮你理解, 还是以VS2017为例,命令如下:

cmake -G "Visual Studio 15 2017  Win64" ..

对比 【2】中的命令多了 【Win64】

4.指定目录下的CMakeLists.txt

习惯上,我更喜欢在和top目录下新建build 目录, 将输出的文件放到这里。【cmake ..】 命令中的【..】其实就是指定 top目录下的CMakeLists.txt文件。

原型:

cmake to/path/cmake_lists_txt_dir

其中【 to/path/cmake_lists_txt_dir 】则指向的是CMakeLists.txt所在目录。

cmake命令行生成32位和64位项目的更多相关文章

  1. 【原创】在Windows系统中使用VC9、VC11编译32位、64位PHP及其扩展

    项目中需要使用runkit模块实现AOP,但是团队成员的开发环境都是Windows,而runkit模块官方没有提供Windows环境下的dll扩展,只能自己编译. 下面是编译过程的分类总结.(操作系统 ...

  2. 查看Eclipse32位还是64位以及Eclipse的编译版本号,查看JDK是32位还是64位

    一.查看Eclipse是32位还是64位 首先进入到Eclipse的安装目录: 查找到文件名为"eclipse.ini" 文件,使用文本编辑工具,或记事本打开,如下图: 以上是查看 ...

  3. Windows10 VS2015下分别编译libevent 32位和64位库

    Libevnt 在Windows10 VS2015下分别编译32位和64位库 直接上王道 libevent代码地址: https://github.com/libevent/libevent git ...

  4. 查看 Java Web 开发环境软件是 32 位还是 64 位

    这里 Java Web 的开发环境指的是:Java + Tomcat + Eclipse 查看 Java 的版本 java -version 结果: JDK 版本位 1.8.0\_221 而且是 64 ...

  5. 64位主机64位oracle下装32位客户端ODAC(NFPACS版)

    64位主机64位oracle下装32位客户端ODAC(NFPACS版) by dd 1.下载Oracle Data Access Components(ODAC) Xcopy的两个版本: x86:(我 ...

  6. Linux系统查看系统是32位还是64位方法总结

    这篇博客是总结.归纳查看Linux系统是32位还是64位的一些方法,很多内容来自网上网友的博客.本篇只是整理.梳理这方面的知识,方便自己忘记的时候随时查看. 方法1:getconf LONG_BIT ...

  7. 查看Linux是32位还是64位

    最直接简洁的办法: 在linux终端输入getconf LONG_BIT命令 如果是32位机器,则结果为32 [root@localhost ~]# getconf LONG_BIT 32 如果是64 ...

  8. Windows2003 IIS6.0支持32位和64位两种模式的设置方法

    IIS 6.0 可支持 32 位和 64 位两种模式.但是,IIS 6.0 不支持在 64 位版本的 Windows 上同时运行这两种模式.ASP.NET 1.1 只在 32 位模式下运行.而 ASP ...

  9. linux-查看系统是32位还是64位

    可以用命令“getconf LONG_BIT”查看, 如果返回的结果是32则说明是32位,返回的结果是64则说明是64位. 此外还可以使用命令“uname -a”查看, 输出的结果中,如果有x86_6 ...

随机推荐

  1. GWAS数据分析常见的202个问题?

    生信其实很简单,就是用别人的工具调参就行了.生信也很折腾,哪一步都可能遇到问题,随时让你疯掉(老辩证法了~).但是,你遇到的问题大部分人也都经历过.这时,检索技能就显得很重要了.平时Biostar和S ...

  2. 【代谢组学】Metabolomics资源推送

    入门课程 伯明翰大学: Metabolomics: Understanding Metabolism in the 21st Century 数据处理 阿拉巴马大学伯明翰分校5年(2013-2018) ...

  3. 03 Windows安装Java环境

    Java环境安装 使用微信扫码关注微信公众号,并回复:"Java环境",免费获取下载链接! 1.卸载(电脑未装此程序,跳过此过程)    找到电脑上面的控制面板    找到这两个文 ...

  4. 学习java 7.25

    学习内容: 特殊边框 1. TitledBorder:它的作用并不是直接为其他组件添加边框,而是为其他边框设置标题,创建该类的对象时,需要传入一个其他的Border对象; 2. CompoundBor ...

  5. adjust, administer

    adjust to just, exact. In measurement technology and metrology [度量衡学], calibration [校准] is the compa ...

  6. Web安全学习二

    目录 常见漏洞攻防 SQL注入 注入分类 按技巧分类 按获取数据的方式分类 注入检测 权限提升 数据库检测 绕过技巧 CheatSheet SQL Server Payload MySQL Paylo ...

  7. Android实现网络监听

    一.Android Wifi常用广播 网络开发中主体会使用到的action: ConnectivityManager.CONNECTIVITY_ACTION WifiManager.WIFI_STAT ...

  8. Linux基础命令---smbpasswd管理samba密码

    smbpasswd smbpasswd指令可以用来修改samba用户的的密码,该指令不仅可以修改本地samba服务器的用户密码,还可以修改远程samba服务器的用户密码. 此命令的适用范围:RedHa ...

  9. Javaj基础知识runtime error

    遇到的java 运行时错误: NullPointerException空指针  ,简单地说就是调用了未经初始化的对象或者是不存在的对象,这个错误经常出现在创建图片,调用数组这些操作中,比如图片未经初始 ...

  10. shell获取目录下(包括子目录)所有文件名、路径、文件大小

    一例shell脚本:取得目录下(包括子目录)所有文件名.路径与文件大小. 代码,shell脚本: lsdir.sh #!/bin/bash # #site: www.jquerycn.cn funct ...