在Makefile趟过的一些坑

Makefile命令参数、调用其他Makefile、嵌套 介绍make运行参数和调用其他makefile 阅读详情

“make: Nothing to be done for xxx” && “ *** missing separator. Stop.”

我实际的操作是在Makefile里面添加了一个命令,保存之后,敲了命令之后就出现了如标题这样的问题,百度看了很多别人的博客、帖子,说的都是因为Makefile没有做make clean,或者make没有安装成功,写命令的格式不对之类的问题。但实际情况是,我fork下来的项目,原本Makefile里的命令都是可以跑的,所以之前的解决方案都不适合我。

问题根源是,我开始一直都是Goland编译器里对Makefile进行修改,尽管我用了tab而不是好几个空格键,但还是会出现问题。
解决方案使用vim对Makefile进行编辑,并且遵照Makefile要求的格式。

在Makefile中,cd到一个目录没有办法生效

这个问题让我一度想使用cp,将需要使用的文件拷贝到目标目录,使用完成后再删除之前拷贝的内容。但如此做实在太傻了,我想Makefile的设计者难道没有考虑到cd这个命令吗?后来通过百度找到了解决方案。
解决方案:cd的功能生效的前提是在当前行,所以指令应该这样写
cd /test/src && ./test.sh && cd ../..
或者
cd /test/src ; ./test.sh ; cd ../..

【makefile】顶层Makefile向下层Makefile传递参数 阅读详情

相关推荐

快速了解Spyder

一 面板介绍菜单栏:放置所有功能工具栏:放置快捷菜单,可以通过菜单栏中的View的Toolbars的复选框来勾选工作区:写代码的地方属性页的标题栏:可以显示当前代码的名字和位置查看栏:查看文件、调试时的对象及变量输出栏:查看程序的输出信息,也可以作为shell终端来输入Python语句状态栏:用来显示当前文件权限、编码,光标指向位置和系统内存二 注释功能注释功能为编写代码很常用功能,下面介绍Spy...

实践求真知 1万+

别再被路径坑了!Makefile中$(CURDIR)和$(MAKEFILE_LIST)的正确用法与避坑指南

本文深入解析Makefile中$(CURDIR)和$(MAKEFILE_LIST)的核心差异与正确用法,揭示路径处理中的常见陷阱。通过设备树编译等实战案例,演示如何构建路径无关的健壮构建系统,特别强调绝对路径与相对路径的适用场景,帮助开发者彻底解决跨目录调用时的路径漂移问题。

weixin_30247307的博客 518

基于OkHttp3+Retrofit2+RxJava3搭建响应式网络框架

本文介绍了一个基于OkHttp3+Retrofit3+RxJava3的响应式网络框架设计。该框架采用分层架构,OkHttp3负责底层网络请求,Retrofit3封装HTTP接口,RxJava3实现响应式流处理。核心亮点包括:1)高度解耦的分层设计;2)统一的异常处理和响应体封装;3)RxJava3实现线程切换和请求管理;4)MVVM架构适配,业务层只需关注数据逻辑。框架提供了完整的实现方案,包括全局配置、拦截器、响应转换、接口声明、仓库封装等组件,并支持生产环境扩展功能如Cookie持久化、Token刷新等

fuge2008的博客 872

Makefile文件之cd无语

今天在编译打包的时候,因为要写makefile文件,所以就少不了用cd命令。 一个有意思的问题出现了,那就是cd改变目录不管怎么样都不生效。 最后google了下下,发现cd只有在当行起做用,这就有点bt了 这一点记起来,以防后来再错。 引用别人的几句话  cd 命令在makefile里面只对当前行有用。比如你在/opt下执行makefile如果我要ta

lamp专栏 2万+

生信人的一天~HIFI数据+HIC数据组装基因组

HIFI+HIC数据组装基因组!

qq_43337286的博客 9530

保姆级教程:用OpenCV的calibrateHandEye()搞定机器人手眼标定(附Python代码)

本文详细介绍了如何使用OpenCV的calibrateHandEye()函数完成机器人手眼标定,解决机械臂与相机坐标系对齐问题。教程涵盖从基础原理、数据采集到Python代码实现的完整流程,特别适合需要精确视觉引导的机器人应用开发。通过手眼标定,可确保机械臂准确抓取相机检测到的目标物体。

weixin_33712987的博客 517

Makefile编译时怎么打印出变量值

$(warning $(DVD_SERVICE)) // DVD_SerVICE是Makefile中的变量 $(warning   ST40_IMPORTS is $(ST40_IMPORTS))  变量名,一定要加括号。不加的话,可以发现前面都无法输出变量的值。 1、输出打印信息的方法是:$(warning xxxxx),$(error xxxxx) 2、输出打印

简单 & 执着 7235

iTunes登录协议逆向与自动化实现

本文详细解析了iTunes登录协议的逆向工程与自动化实现方法,涵盖请求体构造、签名生成和会话管理等关键技术。通过XML结构解析、X-Apple-ActionSignature生成原理及完整登录流程实现,帮助开发者高效完成iTunes自动化登录,提升工作效率。

weixin_26938645的博客 940

makefile 中切换工作目录的问题

我的makefile 需要进行一些特殊处理,有的时候需要切换工作目录,我在 make中写到<br /><br />cd /tmp<br />然后再执行操作,发现工作目录仍然是原来的目录。实际并没有进行切换/<br /><br />请问这是怎么一回事? 谢谢! <br /><br /><br />你可以这么写:<br />cd /tmp && you-operation-cmds<br />记住,一行命令启动一个sub shell,所以<br />前一行命令导致环境的变化在下一行会被reset

merry3688的专栏 1万+

C# 与蓝牙 BLE 设备通信:基于 Windows.Devices.Bluetooth 实现手环/传感器数据读取

本文介绍了如何利用C#的Windows.Devices.Bluetooth命名空间实现与蓝牙BLE设备的通信。首先概述了BLE技术特性及其在物联网中的应用场景,包括智能穿戴设备和传感器。随后讲解了BLE的GATT协议架构,解析了服务(Service)和特性(Characteristic)的概念。文章重点展示了通过C#实现设备扫描、连接、数据读取的完整代码示例,并详细说明了如何使用通知(Notifications)功能实现实时数据更新。最后提供了订阅心率测量特性变化的实现代码,为开发者提供了完整的BLE设备通

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1323

【技能】OpenClaw Skills学习及手搓一个极简skill

本文介绍了OpenClaw Skills的基础概念与使用方法。Skills是OpenClaw代理使用工具的核心载体,通过SKILL.md文件定义技能属性和执行方式。技能加载遵循"工作区>本地>内置>自定义目录"的优先级规则。用户可通过ClawHub一键安装现成技能,也可自定义开发技能:创建技能目录,编写包含YAML元数据和执行指令的SKILL.md文件,放置于工作区skills目录进行测试。文章还介绍了多代理场景下的技能共享、插件集成以及安全注意事项,包括沙箱使用和敏感

海兰 3976

关于makefile

1:先记录一下makefile中如何使用宏定义: 在看mosqutto代码时候,各种根据宏定义执行不同的流程,如: #ifdefWITH_TLS else endif #ifdefWITH_BRIDGE else endif #ifdefWITH_WEBSOCKETS else endif 但是找了半天又没发现这些宏在什么地方,最后在src目录下的config.mk中...

chejinliang的专栏 379

33、密码学中的选择密文攻击与Cramer - Shoup加密方案

本文详细介绍了密码学中选择密文攻击的背景及其对Cramer-Shoup公钥加密方案的影响。该方案在决策Diffie-Hellman假设和抗碰撞哈希函数的基础上,能够有效抵御自适应选择密文攻击,并且其安全性无需依赖随机预言机模型。文章还分析了Cramer-Shoup方案的设计原理、加密与解密过程,以及其在标准假设下的安全性证明方法。此外,通过一系列相关练习,帮助读者进一步理解密码学概念如密文不可区分性、ElGamal加密、Goldwasser-Micali方案等。最后,文章展望了密码学的未来发展趋势,包括量子

vscode6remote的博客 100

linux下Makefile学习之三(书写命令)

书写命令 ———— 每条规则中的命令和操作系统Shell的命令行是一致的。make会按顺序一条一条地执行命令,每条命令的开头必须以[Tab]键开头,除非,命令是紧跟在依赖规则后面的分号后的。在命令行之间中的空格或是空行会被忽略,但是如果该空格或空行是以Tab键开头的,那么make会认为其是一个空命令。我们在UNIX下可能会使用不同的Shell,但是make的命令默认是被“/bin/sh”—

WorldMvp的专栏 670

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

细数makefile遇到的那些坑

细数makefile遇到的那些坑 参考文章: [Makefile] 缩进与空格–记录踩过的坑 1号坑: 示例1: .PHONY: all A=hello ifeq($(A), hello) INFO=true else INFO=false endif all: @echo "result: $(INFO)" 执行结果: $ make Makefile:5: *** 缺失分隔符。 停止。 错误原因: 第5行:ifeq 和 ( 之间应该有空格 2号坑: 示例2: .PHONY:

ljz0929的博客 2254

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

什么是makefile

1什么是Makefile 在之前学习C程序的编译过程中,我们知道编译一个程序还比较简单, 如果要编译多个文件,或者不同文件夹中的文件,需要生成不同的库文件,以及确定这些文件的编译先后顺序,往往所需要的命令行特别多,而且比较复杂,甚至对于以后项目的维护也比较麻烦。 再想想如果我们需要编译Linux内核这样好几W个文件的项目难道需要我们一个命令的输入吗 ? 那估计是一场噩梦。 那么这个时候如果我们能够把所有的编译规则全部规范到文件中,然后通过解析该文件去执行对应的编译...

jinking01的专栏 1万+

Makefile文件:Makefile介绍

本文介绍Makefile的一些基本概念以及简单的用法。本文所用的编译器是Hightec tricore v4.9.1.0。 文章目录1 Makefile的作用2 Makefile的规则3 一个简单的Makefile3.1 帮助文档中的例子3.2 例程1:一个简单的Makefile 1 Makefile的作用 简单来说,Makefile的作用是告诉make如何编译和链接程序。我们在Eclipse界面中写好代码后,会点击一下rebuild按钮来将工程重新编译和链接。这背后就是通过Makefile来实现的。本文博

u013288925的博客 2874

【makefile入门】makefile选项和makefile.buil

学习makefile的常用选项,并通过一个案例来学习makefile.build

jk_lovers的博客 2077

makefile使用MAKEFILE_LIST获取inlcude文件所在的目录

文章目的 记录下MAKEFILE_LIST的获取目录的使用技巧 测试目录 |----Makefile |----test01 |----test.txt |----001 |----test.txt |----test02 |----test.txt |----002 |----test.txt makefile 文件 #inlcue获取路径技 pkgdir ...

mjLlm的博客 2142

Makefile 入门教程

Makefile 定义了软件开发过程中,项目工程编译链、链接的方法和规则。由 IDE 自动生成或者开发者手动书写。Unix(MAC OS、Solaris)和Linux(Red Hat、Ubuntu、SUSE)系统下由 make 命令调用当前目录下的 Makefile 文件,实现项目工程的自动化编译。Windows 环境开发人员,可能并未听说过 Makefile,但是时时刻刻在使用 Makefile 来完成程序的编译,因为开发者并不需要手动编写 Makefile,而是通过 IDE 自动生成。

Doublelv 的博客专栏。 9157

makefile的VPATH坑

源问题链接:https://bbs.youkuaiyun.com/topics/380178411 问题: 我的文件目录结构是: ./ makefile header globe.h src main.c 现在我写的简单makefile的一部分是: #开始 vpath%.c./src vpath%.h./header main.o:main.cglobe.h .PHONYcl...

timerzip的博客 1231

Makefile 变量MAKEFILE_LIST

make程序在读取多个makefile文件时,包括由环境变量“MAKEFILES”指定、命令行指定、当前工作下的默认的以及使用指示符“include”指定包含的,在这些文件进行解析执行之前make读取的文件名将会被自动依次追加到变量“MAKEFILE_LIST”的定义域中。 这样我们就可以通过测试此变量的最后一个字来获取当前make程序正在处理的makefile文件名。具体的说就是在一个makefile文件中如果使用指示符“include”包含另一个文件之后,变量“MAKEFILE_LIST”的最后一个字只

肥叔菌的博客 8573

【Linux】Makefile

Makefile是一个包含了一系列指令的文件,这些指令定义了如何编译和链接程序。Makefile被make命令使用,make是一个构建自动化工具,它根据Makefile中定义的规则来决定哪些文件需要重新编译。

Tesseract_9527的博客 1454

Makefile新手?千万别错过了《驾驭Makefile》

Makefile新手?千万别错过了《驾驭Makefile》 网上搜索makefile教程,转载和推荐最多的就是陈皓《跟我一起写 Makefile》系列,无出其右。 这个系列很不错,适合初学Makefile,了解Makefile的各种规则、语法、依赖和命令。 网上有人说学了一下午《跟我一起写 Makefile》就会写makefile了。 我也试过,照着《跟我一起写 Makefile》学了几天,还是没能把一个小工程的Makefile写出来。所以,如果你学习了几天也没写出可以工作的Makefile来,相信我,你并

洛奇看世界 3933

Makefile中获取当前执行的Makefile所在路径

Linux下我们可以用pwd命令来获取当前所执行命令的目录,在Makefile中对应可用PWD := $(shell pwd)来获取。但是如果子Makefile 文件是从别处执行的(通过make -f .../Makefile 执行),那么$(shell pwd)得到的目录即为执行make -f命令的当前目录。在这种情况下, Makefile本身里面的命令不能对当前目录作出假设.那么如何获取被

专注探索c++,Linux等后台开发相关机制,欢迎关注,欢迎交流 2万+
上一篇: protobuf的安装和入门
下一篇: 浅谈C中的wprintf和宽字符显示
梅雨心情
博客等级 码龄11年 39粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值