17-18 - make 中的路径搜索

news2024/9/27 7:22:27

---- 整理自狄泰软件唐佐林老师课程

文章目录

  • 1. 常用的源码管理方式
    • 1.1 特殊的预定义变量 VPATH(全大写)
    • 1.2 make 对于 VPATH 值的处理方式
    • 1.3 vpath(全小写)
  • 2. 常见问题
    • 2.1 问题 1
    • 2.2 问题 2

1. 常用的源码管理方式

  • 项目中的 makefile 必须能够正确的定位源文件和依赖的文件,最终编译产生可执行程序。

在这里插入图片描述

  • 下面的 makefile 能够成功编译码?

在这里插入图片描述
在这里插入图片描述

1.1 特殊的预定义变量 VPATH(全大写)

  • VPATH 变量的值用于指示 make 如何查找文件
  • 不同文件夹可作为 VPATH 的值同时出现
  • 文件夹的名字之间需要使用分隔符进行区分

在这里插入图片描述

1.2 make 对于 VPATH 值的处理方式

  • 当前文件夹找不到需要的文件时,VPATH 会被使用
  • make 会在 VPATH 指定的文件夹中依次搜索文件
  • 当多个文件夹存在同名文件时,选择第一次搜索到的文件

在这里插入图片描述

  • 注意事项:
    VPATH 只能决定 make 的搜索路径,无法决定命令的搜索路径
    对于特定的编译命令(gcc),需要独立指定搜索路径

在这里插入图片描述

1.3 vpath(全小写)

当 inc 文件夹中意外出现源文件(C、CPP 文件),那么可能产生编译错误

  • 解决方案:vpath 关键字(全小写)
    为不同类型的文件指定不同的搜索路径
    语法:在 Directory 中搜索符合 Pattern 的规则的文件

在这里插入图片描述

  • 取消搜索规则
    • 取消已经设置的某个搜索规则
      vpath Pattern
      例如:
      vpath %.h inc # 在inc中搜索.h文件
      vpath %.h # 不再到inc中搜索.h文件
    • 取消所有已经设置的规则
      vpath

在这里插入图片描述

2. 常见问题

2.1 问题 1

  • 当 VPATH 和 vpath 同时出现时,make会如何处理?

在这里插入图片描述

  • 下面的项目中会选择哪一个文件进行编译?

在这里插入图片描述

在这里插入图片描述

  • 试验结论:
    • make 首先在当前文件夹搜索需要的文件
    • 如果搜索不到:
      make 优先在 vpath 指定的文件夹中搜索目标文件
      当 vpath 搜索失败时,转而搜索 VPATH 指定的文件夹

在这里插入图片描述

2.2 问题 2

  • 当使用 vpath 对同一个 Pattern 指定多个文件夹时,make 会如何处理?

在这里插入图片描述

  • 下面的项目中会选择哪一个文件进行编译?

在这里插入图片描述
在这里插入图片描述

  • 实验结论:
    • make 首先在当前文件夹搜索需要的文件
    • 如果失败:
      make 以自上而下的顺序搜索 vpath 指定的文件夹
      当找到目标文件,搜索结束

在这里插入图片描述

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

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

相关文章

【化学方程式配平 / 3】

题目 代码 #include <bits/stdc.h> using namespace std; const double eps 1e-8; unordered_map<string, int> e; int eidx, midx; //eidx 元素数&#xff0c; midx 物质数 double matrix[45][45]; int q; bool check_alpha(char c) {if(c > a && c …

这一届单机游戏玩家,都在用云电脑玩《黑神话悟空》

文 | 智能相对论 作者 | 陈泊丞 周五下班&#xff0c;上号玩游戏&#xff0c;突然发现&#xff0c;之前因为电脑配置跟不上&#xff0c;“A”了大半年的游戏亲友竟然在线&#xff1f;&#xff01; “哟&#xff0c;终于舍得配电脑了&#xff1f;&#xff01;”我发消息问道。…

RedisTemplate集成+封装RedisUtil

文章目录 1.项目搭建1.创建一个redis模块2.调整pom.xml&#xff0c;使其成为单独的模块1.sun-common-redis的pom.xml 取消parent2.sun-common的pom.xml 取消对redis模块的管理3.sun-frame的pom.xml 增加对redis模块的管理4.关于只在modules中配置子模块&#xff0c;但是子模块没…

每日OJ_牛客_数据库连接池(简单模拟)

目录 牛客_数据库连接池&#xff08;简单模拟&#xff09; 解析代码 牛客_数据库连接池&#xff08;简单模拟&#xff09; 数据库连接池__牛客网 解析代码 题目解析&#xff1a; 服务器后台访问数据库时&#xff0c;需要先连上数据库&#xff0c;而为了连上数据库&#xf…

数盟IOS端可信ID

一、基本情况介绍 数盟IOS端可信ID介绍页: 数字联盟 数盟号称是还原出原生的IDFA, 但是苹果官网这么介绍&#xff1a; 用户开启跟踪允许跟踪后&#xff0c;APP才可以请求获取IDFA&#xff0c;且用户交互界面允许后&#xff0c;APP才能获取到IDFA. 官网给出的基本架构&#xf…

文章改写神器哪个好用?4款好评不断!

在内容创作中改写文章是少不了的工作&#xff0c;而想要高效率快速的完成改写我们是需要讲究下方法。随着文章改写神器的出现&#xff0c;它已成为了许多创作者在改写文章过程中的得力助手。那么&#xff0c;在众多的选择中&#xff0c;哪些文章改写神器真正好用呢&#xff1f;…

Django+Vue花卉商城系统的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 需要的环境3.2 Django接口层3.3 实体类3.4 config.ini3.5 启动类3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍&#xff1a;CSDN认证博客专家&#xff0c;CSDN平台Java领域优质创作者&…

小王陪您考系统规划与管理师之监督管理必考知识点

监督管理必备 1、风险监督的基本方法 风险评估风险审计定期的风险评审差异和趋势分析技术的绩效评估预留管理 2、服务质量的特性 安全性&#xff1a;保密性、完成性、可用性可靠性&#xff08;练完有追吻&#xff09;&#xff1a;连续性、完备性、有效性、可追溯性、稳定性…

C++中的异常处理与资源管理

前言 在软件开发中&#xff0c;异常处理是确保程序健壮性和可靠性的关键机制之一。同时&#xff0c;资源管理也是至关重要的&#xff0c;尤其是在C这样的语言中&#xff0c;手动管理资源的需求较高。本文将探讨C中的异常处理机制以及如何有效地管理资源&#xff0c;以避免资源…

【Python机器学习】NLP词频背后的含义——距离和相似度

我们可以使用相似度评分&#xff08;和距离&#xff09;&#xff0c;根据两篇文档的表示向量间的相似度&#xff08;或距离&#xff09;来判断文档间有多相似。 我们可以使用相似度评分&#xff08;和举例&#xff09;来查看LSA主题模型与高维TF-IDF模型之间的一致性。在去掉了…

网络模型及协议介绍

一.OSI七层模型 OSI Open System Interconnect 开放系统互连模型 以前不同厂家所生产的网络设备的标准是不同的&#xff0c;所以为了统一生产规范就制定了OSI这个生产模型。 作用&#xff1a;降低网络进行数据通信复杂度 这个模型的作用第一降低数据通信的复杂度&#xff…

时序预测 | 基于VMD-SSA-LSSVM+LSTM多变量时间序列预测模型(Matlab)

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 旧时回忆&#xff0c;独此一家。基于VMD-SSA-LSSVMLSTM多变量时间序列预测模型&#xff08;Matlab&#xff09; ——————组合模型预测结果—————————— 预测绝对平均误差MAE LSTM VMDSSALSSVM 组合模型 …

Tomcat10安装

Tomcat下载 进入官网下载https://tomcat.apache.org 注意tomcat版本和Java版本的对应关系&#xff1a; 配置好JAVA_HOME 安装tomcat前&#xff0c;需要先配置好JAVA_HOME&#xff0c;因为tomcat启动时候默认会找环境里面的JAVA_HOME&#xff0c;这里选择的Java版本是java1…

桥接与NET

仔细看看下面两幅图 net模式&#xff0c;就是在你的Windows电脑&#xff08;假设叫A电脑&#xff09;的网络基础上&#xff0c;再生成一个子网络&#xff0c;ip的前两位默认就是192.168&#xff0c;然后第三位是随机&#xff0c;第四位是自己可以手动设置的。使用这种模式唯一的…

112. 路径总和(递归法)

目录 一&#xff1a;题目&#xff1a; 二&#xff1a;代码&#xff1a; 三&#xff1a;结果&#xff1a; 一&#xff1a;题目&#xff1a; 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径&#xff0c;这条路径上所…

C语言基础(二十七)

1、位字段&#xff08;Bit-fields&#xff09;也是一种数据结构&#xff0c;允许在结构体&#xff08;struct&#xff09;或联合体&#xff08;union&#xff09;中定义其成员占用特定的位数。对于需要精确控制内存布局或处理硬件寄存器映射等场景非常有用。位字段使得开发者能…

leedCode - - - 动态规划

目录 1.斐波那契数列&#xff08;LeetCode 509&#xff09; 2.零钱兑换&#xff08; LeetCode 322 &#xff09; 3.爬楼梯&#xff08; LeetCode 70 &#xff09; 4.不同路径&#xff08; LeetCode 62 &#xff09; 5.最长递增子序列&#xff08;LeetCode 300&#xff09; …

LLM(三):基于ChatGPT构建一个问答系统

以电商客服助手为例&#xff0c;通过链式调用语言模型&#xff0c;结合多个Prompt实现复杂的问答与推理功能。 一&#xff0c;基础知识了解 1.1 语言模型 大语言模型&#xff08;LLM&#xff09;是通过预测下一个词的监督学习方式进行训练的。具体来说&#xff0c;首先准备一…

SCP拷贝失败解决办法

1. 现象&#xff1a; 今天在提交代码的时候&#xff0c;提示hooks文件不存在&#xff0c;需要下载。 我之前用scp -p -P 1111 xxxxgerrit.xxxx:hooks/commit-msg$(gitdir)/hooks/ 就能下载&#xff0c; 但是更新系统后下载失败&#xff0c;显示 subsystem request failed …

哪个牌子的电容笔好用又实惠?西圣、绿联、摩米士电容笔实测大比拼

​现在市面上的电容笔很多&#xff0c;在选择时会让人感到很纠结。那么多的选择&#xff0c;究竟哪个牌子的电容笔好用又实惠呢&#xff1f;一款优质的电容笔应考虑握持舒适度、笔尖材质、电池续航能力以及书写流畅度等因素。作为一位多年的数码爱好者&#xff0c;我今天将针对…