windows下使用cmake+mingw配置makefile(一)

2023-10-27

1.下载Cmake,并配置环境变量
下载链接:https://cmake.org/download/

环境变量略

2. 生成Makefile
1)新建 hello 文件夹,在hello中创建hello.c测试程序
mkdir hello
cd C:\Users\Administrator\Desktop\hello
2)在hello中编写hello.cpp如下:
#include <iostream>
using namespace std;

int main(){
	cout << "hello word cmake!!!" <<  endl;
    
	return 0;
}
3)在hello文件夹中创建CMakeLists.txt,编辑如下:
<pre name="code" class="cpp"><pre name="code" class="cpp">set(CMAKE_C_COMPILER "gcc")#设置C编译器
set(CMAKE_C_FLAGS "-g -Wall  -I C:\\mingw-4.81\\mingw\\include -L C:\\mingw-4.81\\mingw\\lib")#

set(CMAKE_CXX_COMPILER "g++")#设置C++编译器
set(CMAKE_CXX_FLAGS "-g -Wall  -I C:\\mingw-4.81\\mingw\\include -L C:\\mingw-4.81\\mingw\\lib")

PROJECT (HELLO CXX)
SET(SRC_LIST hello.cpp)
ADD_EXECUTABLE(hello ${SRC_LIST})

MESSAGE(STATUS "This is BINARY dir " ${HELLO_BINARY_DIR})
MESSAGE(STATUS "This is SOURCE dir " ${HELLO_SOURCE_DIR})
 
 

上述指令的解释如下:
PROJECT:指定工程名字为hello,编程语言为c++,这个指令也隐式的定义了两个cmake变量:<projectname>_BINARY_DIR
以及<projectname>_BINARY_DIR,这里就是HELLO_BINARY_DIR和HELLO_SOURCE_DIR,两个变量指的都是当前工程的路径

Set:是用来显式的定义变量的,我们之前用到的是SET(SRC_LIST main.cpp)如果有多个源文件,也可以定义成SET
(SRC_LIST hello.cpp test1.cpp test2.cpp)定义了这个工程会生成一个文件名为hello的可执行文件,相关的源文件是
SRC_LIST中定义的源文件列表

MESSAGE
:这个指令用于向终端输出用户信息,即上面生成的HELLO_BINARY_DIRHELLO_SOURCE_DIR

4)生成Makefile

cmd
cd C:\Users\Administrator\Desktop\hello
cmake -G   "MinGW Makefiles" . # .为当前目录, "MinGW Makefiles"为makefile类型,如果编译器为vs的话使用"NMake Makefiles"


5)执行编译、运行

make


helllo.exe



从上述的cmake的流程中我们可以看到,cmake的使用核心就是使用CMakeLists.txt配置Makefile,而CMakeLists.txt则有一套自己的语法,这个语法

需要在项目的配置中不断摸索学习。


参考文献:http://www.cppblog.com/Roger/archive/2011/11/17/160368.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

windows下使用cmake+mingw配置makefile(一) 的相关文章

  • 移动IM开源框架对比

    最近在看移动IM相关的资料 然后发现网上有很多的资料 所以在学习过程中 整理了一些笔记 供那些 想了解 移动IM的童鞋一些参考 移动IM技术选型要点 1 协议选型 2 IM 服务器选型 3 协议和IM服务器改造 4 移动IM常见问题以及一些
  • TS的模块化

    TypeScript 模块化 TS中的模块分为外部模块和内部模块 内部模块称为命名空间 内部模块 主要用于组织代码 避免命名冲突 外部模块简称为模块 侧重代码的复用 一个模块里可能有多个命名空间 模块在自身的作用域里执行 而不是在全局作用域
  • 【电气专业知识问答】问:电动机本体温度异常升高如何处理?

    电气专业知识问答 问 电动机本体温度异常升高如何处理 答 1 起因 电动机本体温度异常可能是由于过载 电压低导致过电流 电压高引起铁耗过大 线圈短路或接地 电缆一相断线或接触不良 由于灰尘而导致接触不良等原因 2 处理 应开启备用电动机 停
  • ADXL345测量角度

    include
  • react--umi, 根据权限展示菜单,完成页面权限分配,以及路由鉴权

    umi框架 prolayout布局 access设置菜单权限 initialState全局初始化数据 配合使用 根据后端返回的权限信息 完成菜单的不同的权限的不同展示 1 umi 配合 patlayout 布局 实现根据配置的路由展示菜单栏
  • cocos2d-x2.2.3和android平台环境的搭建

    最开始学习cocos2dx 大多数人可能是被复杂的环境配置过程搞死的 尤其是和Android平台搭建这一块 会把人搞疯 而且各个版本也会有不少的差异 我也是参考了很多才在自己的电脑里搭建好的 仅供参考 是基于cocos2d x2 2 3版本
  • Unity 方向键输入 Input.GetAxis() 和Input.GetAxisRaw(),Vertical 与Horizontal

    GetAxis 是个方法 需要传参数 参数为string类型 参数如下 一 触屏类 1 Mouse X 鼠标沿着屏幕X移动时触发 2 Mouse Y 鼠标沿着屏幕Y移动时触发 3 Mouse ScrollWheel 当鼠标滚动轮滚动时触发
  • ML算法——最优化

    文章目录 数学预备知识 1 最优化问题 2 凸优化 2 1 梯度下降 2 2 牛顿法 2 3 阻尼牛顿法 2 4 拟牛顿法 2 5 总结 数学预备知识 1 最优化问题 最优化问题指的是在给定条件下 找到一个目标函数的最优解 即找到能够使目标
  • ubuntu 开启自启

    开机启动界面 安装chrome浏览器 1 2 wget https dl google com linux direct google chrome stable current amd64 deb sudo apt install goo
  • apache的ab命令做压力测试

    1 最基本的关心两个选项 c n 例 ab c 100 n 10000 http 127 0 0 1 index php c 100 即 每次并发100个 n 10000 即 共发送10000个请求 2 测试结果分析 junjie2 log
  • 图像阈值(opencv_python学习)

    图像阈值 简单阈值 自适应阈值 Otsu二值化 简单阈值 cv threshold 函数是 OpenCV 中用于应用阈值处理的函数 具体的语法如下 ret dst cv2 threshold src thresh maxval type d
  • 前言

    程序猿一枚 喜欢写作 喜欢分享 喜欢音乐 喜欢摄影 爱历史 临近毕业 由于学校教的知识太浅且太散 实在不适合应用于工作中 最近这段时间去了个培训班学习嵌入式开发 学成归来 虽然身边的同窗都纷纷投入社会了 但我还是想要缓一缓 利用一段时间来总
  • 美团 2023年春招 JAVA后端开发方向

    分糖 时间限制 3000MS 内存限制 589824KB 题目描述 小美因乐于助人的突出表现获得了者师的嘉奖 老师允许小美从一堆n个编号分别为1 2 n的糖果中选择任意多个糖果作为奖励 每种编号的果各一个 但为了防止小美一次吃太多糖果有害身
  • Delphi实现Windows的气泡提示样式

    其实也不复杂 主要使用到shellAPI下的TNotifyIconData这个结构体 typedef struct NOTIFYICONDATA DWORD cbSize 结构体的大小 以字节为单位 HWND hWnd 窗口的句柄 UINT
  • Python字符串、集合练习_密码校验

    校验密码是否合法 1 输入一个密码要求长度在5 10位 len 2 密码里面必须包含 大写字母 小写字母和数字 字符串方法或者集合 3 最多输入5次 for 用字符串方法实现 for i in range 5 passwd input 请输
  • 数据库分库分表的应用场景及方法分析

    数据库分库分表的应用场景及方法分析 一 数据库经常面临的问题 二 解决方法的思量 三 急剧膨胀的业务及数据量的影响 以电商领域为例 订单库将订单相关的数据 订单销售 订单售后 订单任务处理等数据 都放在一个数据库 中 对于订单的销售数据 性
  • ArrayList和LinkedList的区别

    ArrayList 基于动态数组 连续内存存储 适合下标访问 随机访问 因为里面存的元素的类型是一致的 所以内存长度是固定的 所以很快就能找到具体位置的元素 扩容机制 因为数组长度固定 超出长度存数据时需要新建数组 然后将老数组的数据拷贝到
  • 第一个只出现一次的字符

    在一个字符串 1 lt 字符串长度 lt 10000 全部由字母组成 中找到第一个只出现一次的字符 并返回它的位置 public class Solution public int FirstNotRepeatingChar String
  • 【torch报错】OSError: [WinError 127] The specified procedure could not be found. Error loading

    导入torch等库的时候报错OSError WinError 127 The specified procedure could not be found Error loading E anaconda3 envs py3 10 lib

随机推荐

  • mybatis讲解(2)之动态SQL的运用

    目录 经典面试题 1 mybatis动态sql 2 模糊查询 3种方式 3 查询返回结果集 总结 前言 在我上篇已经学习了Mybatis简介以及如何去连接数据库 具有增删改查的方法 那么我们今天来学习Mybatis的第二节关于1 mybat
  • 涉密服务器监控系统,涉密场所检查时有哪些注意事项?

    对举办涉密会议和活动的场所以及保密要害部门部位的环境进行检查 是保密技术检查的重要内容 涉密场所保密检查主要包括 门禁和监控系统的检查 异常无线信号检查 涉密场所周边环境的安全性检查 涉密场所隐藏电子设备的检查 隐藏摄像设备检查 电源的检查
  • 计算机算法设计与分析期末试题,算法设计与分析期末考试试卷(D卷)(含答案).doc...

    算法设计与分析期末考试试卷 D卷 一 选择题 0分 每题分 D A n2 2 2n的渐进表达式上界函数是O 2n B n2 2 2n的渐进表达式下界函数是 2n C logn3的渐进表达式上界函数是O logn D logn3的渐进表达式下
  • setter方法的内部实现【不要在init和dealloc函数中使用accessor】

    Objective C 2 0 增加了dot syntax 用于简单地调用成员变量的accessor 相当于java的getter和setter 因为正常情况下 写一个accessor对于初学者来说 还是挺容易犯错的 比如有一个NSStri
  • el-table多选+搜索

    一 问题描述 表格数据是一次性从后端获取到了全部的数据 可前端假分页 在模糊检索表格数据时 因为el table的数据源data发生了变化 重新触发了 selection change事件 此时如果仅仅是在 selection change
  • 27黑马QT笔记之QPixmap和QBitmap的区别

    27黑马QT笔记之QPixmap和QBitmap的区别 前提 首先我们先要了解什么是透明和不透明的图片 1 透明是指显示后与背景颜色一样的 2 不透明就是有自己的颜色 与背景颜色不一样 看下图 前者就是透明的 后者是背景是白色的 是不透明的
  • 详解Python中的三元运算

    详解Python中的三元运算 什么是三元运算符 在大部分编程语言中都有三目运算 也称三元运算 Python语言从Python2 5版本开始也引入了三元运算符 在Python中 三元运算也称为条件表达式 语法如下 true expressio
  • 文件后缀和MIME

    id 后缀名 MIME 0 gif image gif 1 jpg image jpeg 2 png image png 3 bmp image bmp 4 psd application octet stream 5 ico image
  • 锂电池保护板的分类有哪些?

    对于锂电池保护板的认识很多人也是一知半解 并不清楚锂电池保护板具有哪些分类结构 对于如何选择锂电池保护板有些朋友不知道从哪方面着手 那么今天专业生产锂电池保护的锂盾电子带着大家去了解下保护板的分类到底怎样去区分的 保护板可以分为三种种类 三
  • [tensorflow]从Keras加载、保存模型、显示模型权重

    import tensorflow as tf 构建模型 并加载imagenet预训练权重 base model tf keras applications InceptionV3 include top False weights ima
  • python怎么画折线图

    要在 Python 中绘制折线图 你可以使用 matplotlib 库中的 plot 函数 首先 你需要安装 matplotlib 库 这可以使用 pip 包管理器来完成 在终端或命令提示符中输入以下命令 pip install matpl
  • 毛坯房装修

    86平的房子带上家具大概在8 12万左右 硬装 即地面 墙面这些地方瓷砖 水电等装修s 软装 即家具 门框 窗帘等木材 布艺类 全屋定制一般是指 在设计上整体搭配设计 根据整体的设计来定做家具 全屋定制 2 5万 电器 2 5万 5万 窗帘
  • vuex是什么

    vuex是什么 一 vuex是什么 什么是vuex 一 vuex是什么 1 Vuex 是一个专为 Vue js 应用程序开发的状态管理模式 它由五部分组成 分别是 state actions mutations getters module
  • Electron官方实验工具Electron Fiddle

    如果开发者想验证一段简短的代码是否可以在Electron框架内正常运行 那么自己创建个Electron项目 再搞个开发调试环境 就太麻烦了 Electron官方团队为开发者提供了一个更快捷的创建项目并进行试验的工具 Electron Fid
  • 豪华气派!这些院校的图书馆也太美了!

    博尔赫斯曾经说过 我心里一直都在暗暗设想 天堂应该是图书馆的模样 图书馆作为校园里的重要建筑 可以说是大学的门面 很多同学在择校时也会重点关注学校的图书馆 把它作为了解学校底蕴的通道和入口 今天我们就来看看各大高校的神仙图书馆吧 北京大学图
  • ffmpeg vscode debug编译错误【已解决】

    1 make no targets Stop 修改方式 make j N 这个N查看本机有多少个核 问题查找参考链接 https github com openresty openresty issues 22 2 the EAI MEMO
  • 线性回归和逻辑回归(LR)

    回归就是输出值是连续的而不是离散的 如果是离散值 就是分类问题 1 线性回归 1 定义 给定数据集D x1 y1 x2 y2 线性回归尝试学习到一个线性模型 尽可能地输出正确标记 线性回归无非就是在N维空间中找一个形式像直线方程一样的函数来
  • 如何用3个月零基础入门网络安全?

    一 自学网络安全学习的误区和陷阱1 不要试图先成为一名程序员 以编程为基础的学习 再开始学习 我在之前的回答中 我都一再强调不要以编程为基础再开始学习网络安全 一般来说 学习编程不但学习周期长 而且实际向安全过渡后可用到的关键知识并不多 一
  • React实现自定义双向数据流

    ng是双向数据流 VM双向数据绑定 而react与vue都是单向数据流 model层的数据流向view层 今天 我们就尝试自定义实现双向数据流 案例 组件中通过监听input内容变化 进而赋值 class Bar extends React
  • windows下使用cmake+mingw配置makefile(一)

    1 下载Cmake 并配置环境变量 下载链接 https cmake org download 环境变量略 2 生成Makefile 1 新建 hello 文件夹 在hello中创建hello c测试程序 mkdir hello cd C