版权申明:

本文原创首发于以下网站,您可以自由转载,但必须加入完整的版权声明

博客园:https://www.cnblogs.com/MogooStudio/

csdn博客:https://blog.csdn.net/nmjkl001/

知乎:https://www.zhihu.com/people/MogooStudio/

简书:https://www.jianshu.com/u/9547c81ca54e

segmentfault:https://segmentfault.com/u/mogoostudio

CMakeLists.txt 文件解析

  • cmake verson,指定cmake版本
    cmake_minimum_required(VERSION 3.2)
  • project name,指定项目的名称,一般和项目的文件夹名称对应
    PROJECT(test_sqrt)
  • head file path,头文件目录
    INCLUDE_DIRECTORIES(
include
)
  • source directory,源文件目录
    AUX_SOURCE_DIRECTORY(src DIR_SRCS)
  • set environment variable,设置环境变量,编译用到的源文件全部都要放到这里,否则编译能够通过,但是执行的时候会出现各种问题,比如"symbol lookup error xxxxx , undefined symbol"
    SET(TEST_MATH
${DIR_SRCS}
)
  • add executable file,添加要编译的可执行文件
    ADD_EXECUTABLE(${PROJECT_NAME} ${TEST_MATH})
  • add link library,添加可执行文件所需要的库,比如我们用到了libm.so(命名规则:lib+name+.so),就添加该库的名称
    TARGET_LINK_LIBRARIES(${PROJECT_NAME} m)

编译阶段

  • make 命令默认执行的是 make all,make all 有四个阶段: prepare test compile package
    make prepare : 只会执行prepare阶段,这个阶段主要是下载编译依赖
make test : 只会执行test阶段,这个阶段主要是做单元测试
make compile : 只会执行compile阶段,这个阶段主要是进行编译
make package : 只会执行packege阶段,这个阶段会把编译产出都copy到output目录中
make install : 只会执行install阶段,这个阶段是把编译产出放到$GOPATH/bin目录下,这个不是必须的
make clean : 只会执行clean阶段,这个阶段把编译输出的一些文件删除,恢复到编译之前的状态

基本实践

  1. 创建项目文件夹hello
  2. 文件夹hello内,创建构建目录build
  3. 文件夹hello内,创建源代码(main.cpp)
  4. 文件夹hello内,创建CMakeLists.txt
     project(hello)
    add_executable(hello main.cpp)
  5. 通过cmake命令构建项目:终端内执行命令:cmake PATH,这里执行
     cd build
    cmake ..
  6. 通过cmake的gui构建项目

    打开cmake gui设置source和build
    点击Configure设置platform,再点击Configure
    点击Genrate
    点击OpenProject

构建可执行程序(待完善)

构建库程序(待完善)

我的联系方式:

QQ:2161044579

邮箱:mogoostudio@outlook.com

Github:https://github.com/MogooStudio

CMake指南的更多相关文章

  1. C++中使用CMake编译管理项目

    CMake是一个跨平台的Makefile生成工具,可以根据特定的规则生成相应的Makefile文件,并对C/C++源代码进行编译和管理. 有一篇博客介绍CMake的使用,比较通俗易懂,链接地址是:Cm ...

  2. Visual Studio CMake 项目和 WSL

    Visual Studio CMake 项目和 WSL https://devblogs.microsoft.com/cppblog/c-with-visual-studio-2019-and-win ...

  3. cmake简明使用指南

    cmake简明使用指南 Last update 2018/8/8 先执行cmake生成makefile,然后看看里面的内容,(至少在ubuntu16.04上的cmake3.5.1上),有如下内容提供: ...

  4. cmake编译opencv指南

    目录 cmake编译opencv指南 用包管理器安装 查看opencv相关的包 执行安装 编译安装 为什么编译安装 下载源码 编译脚本 执行编译脚本.解决3rdparty下载 编译后的设定-环境变量 ...

  5. CMake入门指南-编译教程

    CMake是一个比make更高级的编译配置工具,它可以根据不同平台.不同的编译器,生成相应的Makefile或者vcproj项目.通过编写CMakeLists.txt,可以控制生成的Makefile, ...

  6. CMake入门指南

    原文地址:http://www.cnblogs.com/sinojelly/archive/2010/05/22/1741337.html CMake是一个比make更高级的编译配置工具,它可以根据不 ...

  7. cmake安装配置及入门指南

    前言 今天,从github下载代码学习,让我用cmake编译,纳尼?make我知道,cmake是啥鬼?天啊,无知很可怕!赶紧mark一波,虽然很耽误学习进度,但感觉还是要get一波! 一.安装准备 感 ...

  8. Android:cmake开发指南

    一.静态库与动态库构建 (.so)共享库,shared object:节省空间,在运行时去连接,如果执行机器上没有这些库文件就不能执行. (.a)静态库,archive:静态库和程序化为一体,不会分开 ...

  9. Markdown编辑器语法指南2

    人的一切痛苦, 本质上都是对自己的无能的愤怒. --王小波 1 Markdown编辑器的基本用法 1.1 代码 如果你只想高亮语句中的某个函数名或关键字,可以使用 `function_name()` ...

随机推荐

  1. 整合多个maven工程时Spring配置加载JDBC问题

    问题叙述: 两个工程都通过JDBC访问mysql数据库,各自运行OK, 但合并成一个maven工程后,发现前一个工程访问数据库异常,貌似拿不到自己的DAO. 解决办法: 发现这两个工程的xml配置中, ...

  2. HTML <input> placeholder 属性

    css ::-webkit-input-placeholder { /* WebKit, Blink, Edge */ color: #909; } :-moz-placeholder { /* Mo ...

  3. 最新28道java基础面试题-上

    28道java基础面试题 1.面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面.抽象只关注对象有哪 ...

  4. MT9V034 全局快门体验总结

    MT9V034 全局快门体验总结 部分照片来源网络,尊重版权. . 这个是实物照片 全局快门(相对滚动快门) 拍摄高速物体的效果 高动态效果 低照度和高照度对比 实际拍照效果图(来自网友华健) 特殊应 ...

  5. 用HAL库结合STM cube编写代码控制stm32f103c8t6来驱动减速电机实现慢快逐步切换转动

    用到的模块 TB6612FNG电机驱动模块 stm32F103C8T6最小系统板 LM2596S降压模块 直流减速电机(不涉及编码器知识) 模块介绍 1.TB6612FNG电机驱动模块 (1)< ...

  6. 【CentOS7】设置静态IP地址

    [CentOS7]设置静态IP地址 转载:https://www.cnblogs.com/yangchongxing/p/10645871.html 图像化修改 nmtui 查看当前网卡名称 # if ...

  7. Java集合类框架的最佳实践?

    根据应用的需要选择合适的集合对性能是非常重要的.如果一个集合的元素数量是固定的,而且我们能够提前知道固定的数量,那么就可以使用数组,而不是ArrayList. 每个集合都可以设置初始容量,如果我们提前 ...

  8. 《Java练习题》习题集一

    编程合集: https://www.cnblogs.com/jssj/p/12002760.html Java总结:https://www.cnblogs.com/jssj/p/11146205.ht ...

  9. SpringBoot初探JSP页面可能遇到的坑

    第一个坑就是依赖没有配了 网上很多依赖的配置代码 在pom.xml文件的dependencies添加以下依赖 <!-- servlet依赖 --> <dependency> & ...

  10. SpringCloud分布式配置中心

    一.什么是配置中心 在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件.在Spring Cloud中,有分布式配置中心组件spring cloud c ...