我是编写makefile的新手,并在stackoverflow上对同一主题进行了几个其他问题,但无法处理我的代码。
我正在编写makefile来编译单个.C文件。
CORE_DIR = ../..
CODE_DIR = $(CORE_DIR)/code
CC=gcc
all: example.o
example.o: $(CODE_DIR)/example.c $(CODE_DIR)/variable.h
$(CC) $(CODE_DIR)/example.c -o output
我正在执行命令:make -f start.mk并收到错误:没有规则为'start.mk'制作目标。
我在哪里错了?
编辑:使用make -d start.mk(调试选项)并更改所有:输出,如评论中所述..这是以下我得到的更多文本,我无法复制。
尝试使用词干linux.mk'.
Rejecting impossible implicit prerequisite
linux.mk.c'的模式规则。
尝试使用词干linux.mk'.
Rejecting impossible implicit prerequisite
linux.mk.cc'的模式规则。
尝试使用词干linux.mk'.
Rejecting impossible implicit prerequisite
linux.mk.C'的模式规则。
尝试使用词干linux.mk'.
Rejecting impossible implicit prerequisite
linux.mk.cpp'的模式规则。
尝试使用词干linux.mk'.
Rejecting impossible implicit prerequisite
linux.mk.p'的模式规则。
尝试使用词干linux.mk'.
Rejecting impossible implicit prerequisite
linux.mk.f'的模式规则。
尝试使用词干linux.mk'.
Rejecting impossible implicit prerequisite
linux.mk.F'的模式规则。
尝试使用词干linux.mk'.
Rejecting impossible implicit prerequisite
linux.mk.r'的模式规则。
尝试使用词干linux.mk'.
Rejecting impossible implicit prerequisite
linux.mk.s'的模式规则。
尝试使用词干linux.mk'.
Rejecting impossible implicit prerequisite
linux.mk.S'的模式规则。
尝试使用词干linux.mk'.
Rejecting impossible implicit prerequisite
linux.mk.mod'的模式规则。
尝试使用词干linux.mk'.
Trying implicit prerequisite
linux.mk.sh'的模式规则。
寻找具有中间文件linux.mk.sh'.
Avoiding implicit rule recursion.
Trying pattern rule with stem
linux.mk.sh'的规则。
尝试隐式先决条件linux.mk.sh,v'.
Trying pattern rule with stem
linux.mk.sh'。
尝试隐式先决条件RCS/linux.mk.sh,v'.
Trying pattern rule with stem
linux.mk.sh'。
尝试隐式先决条件RCS/linux.mk.sh'.
Trying pattern rule with stem
linux.mk.sh'。
尝试隐式先决条件s.linux.mk.sh'.
Trying pattern rule with stem
linux.mk.sh'。
尝试隐式先决条件SCCS/s.linux.mk.sh'.
No implicit rule found for
linux.mk'。
已完成目标文件linux.mk'.
No need to remake target
linux.mk'的先决条件。
make:对于`linux.mk'没什么可做的。
答案 0 :(得分:0)
请尝试这个:
CORE_DIR = ../..
CODE_DIR = $(CORE_DIR)/code
CC=gcc
all: example.o
$(CC) -o output $<
example.o: $(CODE_DIR)/example.c $(CODE_DIR)/variable.h
$(CC) -c $<
如何使用:
Makefile
的文件中,并在与此make
Makefile
start.mk
,但在与此make -f start.mk
相同的目录中调用make start.mk
。注意:makefile中的每个规则都由TAB缩进,而不是某些空格。在这种情况下,在每个$(CC) ..
行之前应该只有一个TAB。
“无目标规则”错误意味着您要求make
根据Makefile提供的规则更新目标,但更新该目标所需的规则不存在。这通常意味着您在命令行中给出了错误的目标名称。
例如,如果您使用上述Makefile,但通过此命令调用make
:make output
,因为没有规则说明如何更新或生成output
,{ {1}}将为您提供无规则错误。