makefile,make,CMake项目编译之helloworld

news2024/10/5 2:27:32

文章目录

  • makefile,make,CMake项目编译
    • 1.相关概念
      • 1.1makefile是什么
      • 1.2make和makefile
      • 1.3cmake
      • 1.4Cmake与CMakeLists 的关系
    • 2.makefile文件编写helloworld

makefile,make,CMake项目编译

1.相关概念

1.1makefile是什么

工程中的源文件,makefie 定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作。

1.2make和makefile

make 是一个命令工具,它解释 Makefile 中的指令。在 Makefile 文件中描述了整个工程所有文件的编译顺序、编译规则。

1.3cmake

CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的 makefile 或者 project 文件,只是 CMake 的取名为 CMakelists.txt。Cmake 并不直接建构出最终的软件。

1.4Cmake与CMakeLists 的关系

cmake 是一个命令工具,可用来生成 makefile。但也要根据 cMakelists.txt中的内容来生成,CMakelists.txt 就是写给cmake 的规则。

make 是一个命令工具,Makefile 是一个文件,make 执行的时候,去读取Makefile 文件中的规则。

cmake是一个命令工具,CMakelists.txt是一个文件,cmake 执行的时候,去读取 CMakelists.txt 文件中的规则。

2.makefile文件编写helloworld

在这里插入图片描述

在这里插入图片描述

抑制输出

在这里插入图片描述

在这里插入图片描述

语法:

目标:依赖

tab 命令

列出当前目录

在这里插入图片描述

在这里插入图片描述

编译一个main.cpp代码

在这里插入图片描述

编译成功

在这里插入图片描述

执行一下这个可执行程序

在这里插入图片描述

在这里插入图片描述

clean命令演示

在这里插入图片描述

删除成功

在这里插入图片描述

make 常用选项

-f 可以指定除上述文件名之外的文件作为输入文件

-v 显示版本号

-n 只输出命令,但并不执行,一般用来测试

-s 只执行命令,但不显示具体命令,此处可在命令中用@符抑制输出

-w 显示执行前执行后的路径

-C dir 指定 makefile 所在的目录

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1391112.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Windows下同一台服务器部署多个tomcat服务

工具 apache-tomcat-8.5.97 安装tomcat步骤 下载apache-tomcat-8.5.97,下载下来的文件为apache-tomcat-8.5.97-windows-x64.zip解压该压缩包到指定目录下,比如E:\works修改解压文件夹名字为:tomcat-8080在E:\works目录下创建该文件夹的两个…

大模型学习之书生·浦语大模型5——基于LMDeploy大模型量化部署实践

目录 大模型部署背景 LMDeploy部署 量化 TurboMind API server 动手实践环节

计算机导论09-数据组织与管理

文章目录 数据管理基础数据管理技术的发展数据组织与管理的发展手工数据处理阶段文件方式的数据处理阶段数据库数据处理阶段 数据库技术的发展 数据模型数据模型的要素概念模型逻辑模型 数据库系统数据库系统基础数据库系统构成 数据库系统的结构数据库系统的体系结构数据库系统…

maxwell同步全量历史数据

CentOS安装maxwell 在上篇的基础上,我们实现了实时同步mysql数据到kafka。maxwell不仅可以同步实时数据,也可以同步全量历史数据。在这里模拟一下历史数据的场景,创建表结构如下,并写入测试数据。 CREATE TABLE user_det…

Kafka集群与可靠性

Kafka集群与可靠性 1.Kafka集群搭建实战 使用两台Linux服务器:一台192.168.182.137 一台192.168.182.138 安装kafka首先,我们需要配置java环境变量(这里就略过了) mkdir /opt/kafka #上传压缩包kafka_2.13-3.3.1.tgz并解压 ta…

某银行主机安全运营体系建设实践

随着商业银行业务的发展,主机规模持续增长,给安全团队运营工作带来极大挑战,传统的运营手段已经无法适应业务规模的快速发展,主要体现在主机资产数量多、类型复杂,安全团队难以对全量资产进行及时有效的梳理、管理&…

【QML COOK】- 010-动态创建组件

上节介绍了Component的概念,本节介绍一下如何使用javascript动态创建对象。 1. 创建工程,新建一个MyComponent.qml的qml import QtQuickRectangle {color: "red" }它很简单就是一个红色框 2. 编辑main.qml import QtQuickWindow {id: root…

mac pro “RESP.app”意外退出 redis desktop manager

文章目录 redis desktop manager下载地址提示程序含有恶意代码“RESP.app”意外退出解决办法:下载python3.10.并安装重新打开RESP如果还是不行,那么需要替换错误路径(我的没用)外传 最近在研究redis的消息,看到了strea…

Ubuntu系统默认的dash shell改成bash shell

在Ubuntu系统中,如果默认的/bin/sh链接指向了dash,而你希望将其更改为指向bash,可以通过以下步骤操作: sudo rm /bin/sh sudo ln -s /bin/bash /bin/sh 但是,这种做法并不推荐,因为某些系统服务和脚本依赖…

在线艺术字生成器-DedeCMS源码-支持字体转换与自定义-适用于网站设计

创造专属艺术字-字体定制-系统源码-支持自定义字体/在线艺术字体转换器 您现在可以随心所欲地在线生成、转换和设计艺术字体。我们的系统源码以html为主, 虽然基于DedeCMS内核,但赋予您无限的可能性。后台管理功能只是辅助,您可以自由探索和…

外观模式(结构型)

目录 一、前言 二、外观模式 三、总结 一、前言 外观模式(Facade Pattern)是一种结构型设计模式,它为系统中的一组复杂子系统提供一个简单的接口,从而隐藏了这些子系统的复杂性,并且使得代码更加易于使用和理解。 外…

推荐系统模型(一) DFN 详解 Deep Feedback Network for Recommendation

背景 在大多数的推荐系统中,往往注重于隐式正反馈(例如:点击),而忽略掉用户的其他行为(例如大多数CTR模型只考虑用户的喜欢,而忽略了不喜欢)。腾讯在Deep Feedback Network for Recommendation 一文中,提出了一个新颖…

VitePress-01-从零开始的项目创建(npm版)

说明 本文介绍一下 VitePress的项目创建的步骤。 主要用到的命令工具是 npm。 本文的操作步骤是从无到有的创建一个完整的基本的【VitePress】项目。 环境准备 根据官方文档的介绍,截止本文发稿时,需要使用node.js 18 的版本。 可以使用node -v 的命令查…

Electron+React项目打包踩坑记录

首先,如何打包 写下本文的时间是 2024/01/16,搜索了网络上 ElectronReact 的打包方式,中间行不通,本文采用的方式是记录本文时 Electron 快速入门(https://www.electronjs.org/zh/docs/latest/tutorial/quick-start)记录的打包方式…

电子学会C/C++编程等级考试2023年05月(八级)真题解析

C/C++编程(1~8级)全部真题・点这里 第1题:道路 N个以 1 … N 标号的城市通过单向的道路相连:。每条道路包含两个参数:道路的长度和需要为该路付的通行费(以金币的数目来表示) Bob and Alice 过去住在城市 1.在注意到Alice在他们过去喜欢玩的纸牌游戏中作弊后,Bob和她分手…

vtk9.3 配置 visual studio 2019 运行环境 和运行实例详解

(1)包含文件配置: 项目--属性--VC目录,在包含目录中把include文件夹的地址加进去,一直要到下一级 vtk-9.3目录下, 小知识: 在Visual Studio 2019中运行项目时,如果项目中使用了第三…

SpringBoot项目中简单使用虚拟机Redis

目录 步骤大致如下: 一.在pom文件中加入redis依赖 二.在虚拟机上打开我们下载好的Redis。开启服务器端并获取虚拟机ip地址 三.在项目配置。 四:使用redis 测试 redis是一个以键值对存储的NoSQL。被数百万开发人员用作缓存、矢量数据库、文档数据库、…

SpringBoot-项目复制

Spring Boot是一个用于简化Java应用程序开发的框架,它提供了自动配置和约定优于配置的原则。项目复制是指通过复制现有的Spring Boot项目来创建一个新的项目,以便快速搭建基于相似功能或结构的应用程序。项目复制可以减少类似项目的开发时间、提高生产力…

MongoDB 环境搭建及使用详解

文章目录 1、安装1.1 window平台安装MongoDB1.2 Linux系统中安装启动和连接 2、MongoDB连接3、MongoDB 概念数据库(DATABASE)文档(Document)集合元数据 4、常用语法创建数据库删除数据库创建集合查看创建的集合删除集合文档CRUD 5…

Rust 错误处理(上)

目录 1、用 panic! 处理不可恢复的错误 对应 panic 时的栈展开或终止 1.1 使用 panic! 的 backtrace 2、用 Result 处理可恢复的错误 2.1 匹配不同的错误 2.2 失败时 panic 的简写:unwrap 和 expect 2.3 传播错误 错误是软件中不可否认的事实,所…