首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

VPATH没有在makefile中wotking

相关·内容

makefile

一直套娃下去 最终生成可执行文件 找寻的过程,如果出现错误,比如最后被依赖的文件找不到,那么make就会直接退出,并报错,而对于所定义的命令的错误,或是编译不成功,make根本不理。...make只管文件的依赖性,即,如果在我找了依赖关系之后,冒号后面的文件还是不在,那么对不起,我就不工作啦 上述例子的clean没有被edit直接/间接关联,则make不会自动执行。...makefile包含其他makefile的指令如同c++ 一样: -include foo.make a.mk b.mk c.mk e.mk f.mk 减号仍然表示不管怎样报错都继续执行下去,上面的命令可以采用部分正则规则简化...,~ make可以别的文件夹下寻找文件: VPATH=src:...../headers 如果make没有在当前文件夹下找到文件,就回去VPATH的路径下寻找文件,另一种方法是使用更为灵活的vpath: vpath # 为符合模式的文件指定搜索目录

1K20

Makefile教程

Makefile我们要定义一系列的变量,变量一般都是字符串,这个有点你C语言中的宏,当Makefile被执行时,其中的变量都会被扩展到相应的引用位置上。 4.文件指示。...其包括了三个部分,一个是一个Makefile引用另一个Makefile,就像C语言中的include一样;另一个是指根据某些情况指定Makefile的有效部分,就像C语言中的预编译#if一样;还有就是定义一个多行的命令...SRCDIR变量command中出现时,以类似于宏替换的方式将其载入command。 (3)预定义变量VPATH指明目标的依赖项所在目录 VPATH= src:./include:....vpath命令有三种形式: vpath pattern path : 符合pattern的文件path目录搜索。...: $(CC) $(INCLUDE) $(CFLAGS) -c $< 一眼望去,为什么目Makefile目标文件没有依赖项。

3.9K53

Makefile 使用总结

还得要注意的是,这些变量只使用在规则的命令,而且一般都是"显式规则"和"静态模式规则"(参见前面"书写规则"一章)。其隐含规则没有意义。 1....当一个Makefile涉及到大量源文件时(这些源文件和Makefile极有可能不在同一个目录), 这时, 最好将源文件的路径明确Makefile, 便于编译时查找....指定了 VPATH 之后, 如果当前目录没有找到相应文件或依赖的文件, Makefile 回到 VPATH 指定的路径再去查找...../header # 示例3 - 清除示例2设置的规则 VPATH %.h # 示例4 - 清除所有VPATH的设置 VPATH 2.2 Makefile 的变量 2.2.1 变量定义 ( = or..., 并且 make时没有使用 -e 参数 file 定义Makefile command line 定义命令行 override

3.5K30

makefile从入门到放弃——博主吐血整理的笔记

可以makefile目标前加上.PHONY:'目标名' makefile变量 makefile的定义的变量,就像是C/C++语言中的宏一样,他代表了一个文本字串,Makefile执行的时候其会自动原模原样地展开在所使用的地方...其与C/C++所不同的是,你可以Makefile改变其值。makefile,变量可以使用在“目标”,“依赖目标”, “命令”或是Makefile的其它部分。...makefileVPATH VPATH:虚路径 一些大的工程,有大量的源文件,我们通常的做法是把许多的源文件分类,并且存放在不同的目录下。...makefile文件的特殊变量VPATH就是完成这么一个功能,如果没有指明这个变量,make只会在当前目录中去寻找依赖文件和目标文件。...当使用 make 的选项 “-C” 的时候,命令就会进入指定的目录,然后此变量就会被重新赋值。总之,如果在 Makefile 没有对此变量进行显式的赋值操作,那么它就表示 make 的工作目录。

1.6K20

Make

以#开头的行为注释行,makefile若用到#,可用#;同样,$应该用$$。依赖列表后加上分号后,可直接跟上命令。...make定义了一个叫VPATH的变量,在当前目录搜索不到依赖文件时,便到VPATH定义的目录中去寻找。...也可用关键字vpath 定义搜索位置: vpath vpath :清除所有已被设置好的文件搜索目录。 如:vpath %.h ...../headers表示../headers目录下搜索所有.h结尾的头文件。 变量: makefile通常可定义变量,make执行时会把变量名出现的地方用变量值代替。...=:在此之前没有给该变量赋值才会给该变量赋值 +=:追加变量值,与原变量值之间用空格隔开 预定义变量: makefile 预定义了许多变量,隐含规则通常会用到这些变量: 宏名 初始值

1.9K100

makefile文件编写「建议收藏」

通常我们将一些配置选项分开成一个独立的makefile文件,这样有利于makefile文件的管理,或将模块代码的依赖关系和需要编译的文件信息独自写到一个 makefile文件,最终通过include命令形成一个顶层...2、变量定义: 语法:变量名 := 变量值 makefile,经常先定义一个变量,然后往该变量追加新的值(通过+=符号),比如先定义一个C_SRCS变量(该值可以为空),然后将代码文件test1....c和test2.c添加到C_SRCS,其代码如下所示: C_SRCS := C_SRCS += test1.c test2.c makefile中有一类特殊的变量,其名称为 自动变量,自动变量的值会依据规则的...makefile文件规则有2种,一种是显式规则,另一种是隐式规则。...5、文件搜索路径设置 Make命令默认会在当前路径搜索prerequisites的文件,比如头文件,但我们写程序时,经常将头文件和源文件隔开放在不同的文件夹下,这种该怎么处理呢?

2.3K10

2023学习日志

,而是一个动作,类似于一个lable,make时不会自动执行,需要显式输入make clean才能运行该target对应的recipe此外,clean 更加规范的写法是,.PHONY: cleanclean...command.o display.o \ insert.o search.o files.o utils.o.PHONY表示clean为伪标签,而-rm表示当shell命令出错时继续运行,删除其他文件makefile...makefile示例include foo.make *.mk $(bar)可以使用include命令将其他makefile引入makefile,include命令会将指定makefile文件插入到include...、 ~’三个通配符文件搜寻示例VPATH = src:../headersvpath %.h ...../headers可以使用特殊变量 VPATHvpath关键字来设置搜索目录多目标与静态模式比较复杂,还需要复习自动生成依赖性通过recipe自动生成文件的依赖关系,依赖关系放到对应的.d文件

17820

Linux 开发 | 学习 Makefile

vpath %.c dir1 # dir1 寻找 .c 文件 vpath % dir2 # dir2 寻找 任何需要的文件 vpaht %.c dir3 # 同 1 # 当前目录找不到的情况下...命令回响 Makefile 执行如下命令, echo 命令执行 终端会输出如下 : echo 命令执行 命令执行 第一行是执行的命令完整打印(回响),第二行才是我们需要的输出的,关闭命令回响的方法是该行命令前添加...---- Makefile 的变量 Makefile 的变量,就如程序的宏定义,代表一个字串,使用的地方展开,通过 $(variable) 表示变量的内容,和 shell 类似。..., 不允许一个完整的 if-endif 语句跨越两个 Makefile 例子,判断执行 flag 函数 findstring 用于判断 A 字符串是否 B 字符串, 没有返回空,有返回 A 下面例子...例子, Makefile 获取最后一个 git 提交的 SHA 赋值给变量。

5.3K10

Makefile基本用法

前两行等价,第三行的-include使make忽略不存在或无法重新生成且没有错误消息的makefile ? ? ?...= 是如果没有被赋值过就赋予等号后面的值 += 是添加等号后面的值 = 和:=的不同在于后者是立即生效,而前者整个变量赋值结束后才作为生效结果(deferred推迟的)。 ?...当foo.c不存在当前的路径,则按照VPATH顺序依次搜索,如下是不存在的情况,但是src,因此进行了等价。 ? ?...vpath语法,以下实现了当未找到,则对.c文件进行foo、bar文件夹依次查找,然后再在blish找 ?...当一个先决条件的名称的格式为'-lname'时,make通过搜索文件来专门处理它libname.so文件 如果找不到,则在当前目录的libname.a文件 通过匹配vpath搜索路径和vpath搜索路径指定的目录

2.5K40

分享一个很通用c语言的Makefile

编写Makefile是一个苦乐交织的事情,快乐是因为从一堆需要手工逐个处理的编译过程,进步到一条命令完成,看着代码顺畅的屏幕上滚动,编译为最终的产品,那个过程无比愉悦;而痛苦则是,写代码已经很累了,写完代码还要编写...Makefile,这多出来的一点工作,很有点最后一根稻草的感觉。...最近整理手头的几个项目,把C语言类的Makefile抽象、合并了一下,形成了一个比较通用的编译脚本,这里分享一下: #定义编译器 CC=gcc #自己特定的编译参数,这里仅为示例,这个参数是消除mac编译...(OUTSDIR)/libcallfunctions.a $(DEPS) #清理 .PHONY : clean clean: -rm $(OUTSDIR)/* $(TMPSDIR)/* 主要的编译环节...另外当前这个脚本有一个bug就是每次编译实际上所有的.o文件都会完整重新编译一遍,而没有判断源文件是否更新并忽略没有更新的源文件,所以不适合大的系统。

99240

c语言单元测试框架check

什么是check 最近学习的开源代码,测试代码都是依赖了一个叫做check库编写的,调查之后才知道,这个check是个单元测试框架。下面对它进行简单的介绍。...测试框架因此直接退出,用户是看不到任何返回的,只有郁闷的 coredump; (3) Check 的单元测试运行在 fork 的子进程,可以避免测试框架由于 coredump 而崩溃。...使用tree查看目录机构: . ├── include │ ├── sub.h │ └── unit_test.h ├── makefile ├── sub │ └── sub.c └──...*tc_sub = tcase_create("sub"); // 建立测试用例集 suite_add_tcase(s, tc_sub); // 将测试用例加到Suite...EXIT_SUCCESS : EXIT_FAILURE; } makefile文件 vpath %.h include #vpath 指定搜索路径 vpath %.c add vpath

2.5K10

makefile 指定文件的生成目录

假定我们的源文件放在src目录,头文件放在inc目录,.o文件放在obj目录,.d文件放在dmk目录,Makefile和上述4个目录为同一级别。...patsubst %.c,%.d,$(notdir $(SRC_C)))) notdir表示去除目录,则(notdir (SRC_C))表示a.c b.c patsubst表示把(notdir (SRC_C))的....c替换成.o,即a.o b.o addprefix表示增加前缀$(D_OBJ)/,则OBJ_C变量表示为obj/a.o obj/b.o 4.明白了上述语句之后我们可以把makefile写成如下状态 D_SRC...5.vpath 自动变量的使用,第一个参数是查找的类型,第二个是查找的目录 vpath %.c src #查找依赖时如果遇到%.c,则自动到src目录下寻找 D_SRC = src D_INC = -I...%.c src:src1:src2 大写VPATH只能指定依赖的查找目录,不能指定类型,所以也可以写成 VPATH = src D_SRC = src D_INC = -I.

3.7K20

Linux CC++工程可生成ELF、动静态库文件的通用Makefile

LIBPATH}:/home/typecodes/lib 最后需要说明的是,变量$(PROJECT_DIR)表示当前C/C++工程的根路径,可以直接将本Makefile文件的命令# PROJECT_DIR...同样,更建议工程的配置文件配置,例如: export PROJECT_DIR=/home/typecodes 2 使用方法 配置好Makefile文件的变量对应的值后,直接将该文件放置需要编译的...伪目标clean对应的命令make clean能够清除上次执行make命令产生的影响;伪目标help对应的命令make help能够界面上输出Makefile文件的重要变量的值,方便调试。...3 附录:Makefile文件源码 已将下面的Makefile源文件托管到两个仓库: 1、GitHub: https://github.com/vfhky/General_Makefile; 2、Coding.... vpath %.h $(sort $(dir $(SRC_H))) vpath %.c $(sort $(dir $(CUR_C))) vpath %.cpp $(sort $(dir $(CUR_CPP

16810

Linux CC++工程可生成 ELF、动静态库文件的通用 Makefile(二)

今天对之前写的 Linux C/C++工程可生成ELF、动/静态库文件的通用Makefile - TypeCodes 文章里面的 Makefile 进行了优化,增加了在当前目录生成单个可执行文件的功能...1 功能说明 之前已有的功能不再赘述,这次主要是包含多个 cpp 文件的项目中生成一个可执行文件(之前只能一个 cpp 或者 c 文件生成对应的一个可执行文件)。...如上图所示,我的一个 myRedisSentinel 目录包含了多个 cpp 文件,然后只要在 SINGLE_BIN 里面配置想要输出的可执行文件名称,最后执行 make -j4 命令即可生成。...2 附录:Makefile 文件源码 已将下面的 Makefile 源文件托管到 github仓库: 1、GitHub: https://github.com/vfhky/General_Makefile.... vpath %.h $(sort $(dir $(SRC_H))) vpath %.c $(sort $(dir $(CUR_C))) vpath %.cpp $(sort $(dir $(CUR_CPP

7410

Linux CC++工程可生成 ELF、动静态库文件的通用 Makefile(二)

今天对之前写的 Linux C/C++工程可生成ELF、动/静态库文件的通用Makefile - TypeCodes 文章里面的 Makefile 进行了优化,增加了在当前目录生成单个可执行文件的功能...1 功能说明 之前已有的功能不再赘述,这次主要是包含多个 cpp 文件的项目中生成一个可执行文件(之前只能一个 cpp 或者 c 文件生成对应的一个可执行文件)。...如上图所示,我的一个 myRedisSentinel 目录包含了多个 cpp 文件,然后只要在 SINGLE_BIN 里面配置想要输出的可执行文件名称,最后执行 make -j4 命令即可生成。...2 附录:Makefile 文件源码 已将下面的 Makefile 源文件托管到 github仓库: 1、GitHub: https://github.com/vfhky/General_Makefile.... vpath %.h $(sort $(dir $(SRC_H))) vpath %.c $(sort $(dir $(CUR_C))) vpath %.cpp $(sort $(dir $(CUR_CPP

8110
领券