makefile失败-隐式规则编译一个目标文件,但不编译其余目标文件

时间:2018-09-13 00:31:59

标签: makefile

Makefile没有正确使用隐式规则。我正在遵循本指南here

这是我的makefile:

objects = main.o hello.o
hello : $(objects)
    cc -o hello $(objects)

hello.o : defs.h
main.o : defs.h hello.h

.PHONY : clean
clean :
    -rm hello $(objects)

我收到以下错误:

cc: error: main.o: No such file or directory

它将创建目标代码hello.o,但不会对main.c执行此操作。如果我交换行并且main在上面,它将创建main.o而不是hello.o。

这是我的main.c文件:

#include "defs.h"
#include "hello.h"

int main(int argc, char** argv) {
   display_hello();
   return (EXIT_SUCCESS);
}

这是我的hello.c文件:

#include "defs.h"

void display_hello()
{
    printf("Hello!\n");
}

我的hello.h文件:

#ifndef HELLO_H
#define HELLO_H

#ifdef __cplusplus
extern "C" {
#endif

#ifdef __cplusplus
}
#endif

#endif /* HELLO_H */

void display_hello();

这是我的defs.h文件:

#ifndef DEFS_H
#define DEFS_H

#ifdef __cplusplus
extern "C" {
#endif

#ifdef __cplusplus
}
#endif

#endif /* DEFS_H */

#include <stdio.h>
#include <stdlib.h>

0 个答案:

没有答案