1.基本测试

最基本的功能就是利用源代码文件生成一个可执行程序。
CMakeLists.txt:
cmake_minimum_required ( VERSION 3.5)
project (Tutorial)
add_executable(Tutorial tutorial.c)

Tutorial.c:

// A simple program that computes the square root of a number
#include <stdio.h>
#include <stdlib.h>
#include <math.h>int main (int argc, char *argv[])
{double inputValue = 4;double outputValue = sqrt(inputValue);fprintf(stdout,"The square root of %g is %g\n",inputValue, outputValue);return 0;
}

利用CMake组建,VisualStudio编译就可以生成可执行文件Tutorial.exe。

这里会出现一个问题就是Tutorial.exe点击后出现闪退,采用一下方法可以解决。
  • exe目录下新建一个文本文档:新建文档.txt;
  • 打开文档,键入内容:Tutorial.exe (换行) pause  注意XX.exe,XX是你的实际应用程序名;
  • 保存文档,名字+后缀改为:Tutorial.bat;
  • 点击Tutorial.bat文件即可解决闪退问题。

2.增加版本号并配置头文件

首先讨论的是给我们的项目/可执行程序添加一个版本号。当然我们可以在源代码中设置,但是在CMake中设置版本号会更加灵活。
首先我们要修改CMakeLists.txt如下:
cmake_minimum_required (VERSION 3.5)
project (Tutorial)
# The version number.
set (Tutorial_VERSION_MAJOR 1)
set (Tutorial_VERSION_MINOR 0)# configure a header file to pass some of the CMake settings
# to the source code
configure_file ("${PROJECT_SOURCE_DIR}/TutorialConfig.h.in""${PROJECT_BINARY_DIR}/TutorialConfig.h")# add the binary tree to the search path for include files
# so that we will find TutorialConfig.h
include_directories("${PROJECT_BINARY_DIR}")# add the executable
add_executable(Tutorial tutorial.c)

因为配置文件将要被写入到二进制文件结构中,所以我们必须要把该文件添加到相应的路径列表中。首先,我们在源路径下创建TutorialConfig.h.in,如下:

// the configured options and settings for Tutorial
#define Tutorial_VERSION_MAJOR @Tutorial_VERSION_MAJOR@
#define Tutorial_VERSION_MINOR @Tutorial_VERSION_MINOR@
!!该文件是在帮助我们利用CMake生成相应的TutorialConfig.h文件!!

当CMake配置头文件的时候, @Tutorial_VERSION_MAJOR@ 和 @Tutorial_VERSION_MINOR@ 的值就会被 CMakeLists.txt 文件中得值所取代。

下面修改原文件Tutorial.c,使其包括配置的头文件并使用版本号,源代码修改如下:
// A simple program that computes the square root of a number
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "TutorialConfig.h"int main (int argc, char *argv[])
{double inputValue = 4;double outputValue = sqrt(inputValue);fprintf(stdout,"The square root of %g is %g\n",inputValue, outputValue);fprintf(stdout,"%s Version %d.%d\n",argv[0],Tutorial_VERSION_MAJOR,Tutorial_VERSION_MINOR);return 0;
}

输出结果:

CMake2:版本号配置与头文件生成相关推荐

  1. 【错误记录】Visual Studio 中配置 NDK 头文件路径 ( NDK 的三个头文件路径 | 与 CPU 架构相关 asm 头文件路径选择 )

    文章目录 一.报错信息 二.解决方案 1.NDK 的三个头文件路径 2.与 CPU 架构相关 asm 头文件路径选择 一.报错信息 参考 [Android 逆向]Android 进程注入工具开发 ( ...

  2. 【Android NDK 开发】Visual Studio 2019 使用 CMake 开发 JNI 动态库 ( 动态库编译配置 | JNI 头文件导入 | JNI 方法命名规范 )

    文章目录 I . JNI 与 NDK 区别 II . Visual Studio 编译动态库 III. 配置 导入 jni.h 头文件 IV . IntelliJ IDEA Community Edi ...

  3. 【错误记录】Visual Studio 中配置 NDK 头文件路径

    文章目录 一.报错信息 二.解决方案 一.报错信息 参考 [Android 逆向]Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | 使用 Mak ...

  4. Qt工程pro文件的配置和头文件和库的添加

    Qt开发中,pro文件是对正工程所有源码.编译.资源.目录等的全方位配置的唯一方式,pro文件的编写非常重要,以下对几个重要项进行说明(win和linux,mac平台通用配置) 注释 以"# ...

  5. [C++] 使用<random>头文件生成均匀分布、正态分布的数据

    一.摘要 对于满足指定分布的自由变量,如果无法通过分布函数公式计算得到其期望和方差,可以考虑使用采样法得到其期望.方差值的近似值.在此过程中需要按照特定的分布函数进行随机采样,并统计采样数据,可以使用 ...

  6. 在VS2017下配置pylon头文件

    在VS2017下配置#include <pylon/PylonIncludes.h> 1.打开VS2017,点击文件一>新建一>项目,新建一个空项目: 2.右击解决方案资源管理 ...

  7. 【Android FFMPEG 开发】Android Studio 工程配置 FFMPEG ( 动态库打包 | 头文件与函数库拷贝 | CMake 脚本配置 )

    文章目录 I . FFMPEG 交叉编译后的函数库及头文件 II . FFMPEG 静态库打包动态库 ( 仅做参考 ) III . 创建 Android Studio 工程 IV . FFMPEG 头 ...

  8. gsoap 学习 1-由wsdl文件生成h头文件

    开始前先看一下用户向导吧 http://www.cs.fsu.edu/~engelen/soap.html 中左侧点击Documentation 英语水平确实有限,有些内容可能说的不准确,敬请参考向导 ...

  9. 【C++ 语言】Visual Studio 配置 POSIX 线程 ( Windows 不支持 POSIX | 配置文件下载 | 库文件说明 | 配置过程 )

    文章目录 POSIX 线程局限性 POSIX 线程配置文件下载及目录说明 Windows 动态库与静态库 POSIX 线程配置 ( 项目配置 ) POSIX 线程配置 ( Windows 动态库拷贝 ...

最新文章

  1. JZOJ__Day 8:【普及模拟】马农
  2. Android Git 客户端
  3. 回调函数自定义传参_10分钟教你手写8个常用的自定义hooks
  4. 常用的后端性能优化六种方式:缓存化+服务化+异步化等
  5. 下学期第三次作业——SQA计划和验收测试规程设计
  6. 计算机常用工具软件教案,常用工具软件教案.doc
  7. CV《物体识别与检测2 - 多目标识别基本算法》
  8. Python实战从入门到精通第四讲——数据结构与算法2之实现一个优先级队列
  9. python web开发-flask中消息闪现flash的应用
  10. 在.NET中探测U盘的插入/拔出
  11. ASIFormDataRequest实现上传图片
  12. 冯诺依曼图熵(VNGE)Python实现及近似计算
  13. 元组-不仅仅是不可变的列表
  14. 兴业证券:主动偏股型基金评价体系
  15. Java基本数据类型之char
  16. 2寸的照片长宽各是多少_1寸和2寸的照片的长和宽各是几厘米?
  17. php怎么将农历转换成公历,PHP实现阳历到农历转换的类实例
  18. 记录一下java的常用单词
  19. Web服务器配置管理
  20. win10误删的注册表能还原吗_win10自带注册表恢复方法 win10注册表误删如何修复...

热门文章

  1. git常见错误failed to push some refs to
  2. IREP_SOA Integration程序注释语法Annotations(概念)
  3. analyze table tablename
  4. Struts2拦截器简单示例
  5. Windows 7防火墙设置详解(三)
  6. hdu 2563(递推)
  7. nyist-组队赛(六)
  8. Docker 单机网络
  9. Echarts柱状图顶部加数量显示
  10. 爬虫之验证码IP攻防心得——小总结