与要定义的规则序列相关的生成文件行为
Makefile behaviour related to sequence of rules to be defined
我写了一个makefile,其中命令的顺序在我的makefile中如下所示
.PHONY: all clean distclean run
run : $(program_NAME)
./$(program_NAME) > output.txt #runs my program and stotre output in output.txt
all: $(program_NAME)
$(program_NAME): $(program_OBJS)
$(LINK.cc) $(program_OBJS) -o $(program_NAME)
如果我将此序列更改为以下的顺序,则对我不起作用:-
.PHONY: all clean distclean run
$(program_NAME): $(program_OBJS)
$(LINK.cc) $(program_OBJS) -o $(program_NAME)
all: $(program_NAME)
run : $(program_NAME)
./$(program_NAME) > output.txt #runs my program and stotre output in output.txt
这对我来说doesnot generate any output.txt
.我觉得run :
依赖于 $(program_NAME),所以$(program_NAME): $(program_OBJS)
$(LINK.cc) $(program_OBJS) -o $(program_NAME)s
应该在 makefile 中run :
之前。但它在另一种方式下工作得很好. 有人可以在这里投掷一些光吗?(谢谢)
首先,您必须遵守 makefile 的缩进规则。规则要执行的命令应以制表符开头。然后,考虑到当您键入 makefile 时,生成文件中显示的第一个规则会自动执行make
。在第一种情况下,程序运行。要在第二个生成文件中获得相同的run
规则不是第一个,您必须执行make run
。
相关文章:
- C++无法定义虚拟函数 OUTER 类和头文件
- QML:修改在不同QML文件(而非main.QML)中定义的子对象的属性
- 尝试调用 .h 文件中定义的变量时出现变量未定义错误
- 在头文件和 cpp 文件中使用一次 #pragma 时出现结构重定义错误
- C++编程从外部文本文件定义数组大小
- MAKE:找不到包含的用户定义的头文件?
- 定义C++新的环境变量并在 bat 文件中使用它
- 在头文件中定义变量不会出错
- 即使我没有包含多个文件,C++中的多个定义错误
- 如何检查函数是否在LLVM Instrumentation pass的ModulePass的系统头文件中定义?
- 查找定义我的 C/C++ 函数/宏的文件比'grep'更简单的方法
- 将文件复制到自定义位置,存在字符串转换问题
- 如何正确定义C++类析构函数并将其链接到主文件?
- C2011: 'Card':"类"类型重新定义(尽管使用了包含保护并且没有在文件中重新定义.cpp类)
- 从头文件定义嵌套类
- 使用标头文件定义MT19937和normal_distribution
- 为特定文件定义
- 从.h和.cpp文件定义纯虚拟函数会产生链接器错误吗
- C 编程从外部输入文件定义数组大小
- 编译头文件定义了一个模板类,该类还包括其他头文件