24,855
社区成员
发帖
与我相关
我的任务
分享
CC = gcc
CFLAGS = -g -Wall
CUR_DIR = $(shell pwd)
TOP_DIR = $(CUR_DIR)/..
SRC_DIR = $(TOP_DIR)/src
INC_DIR = -I$(TOP_DIR)/inc
main: testMakefile.o
$(CC) -o main testMakefile.o
testMakefile.o: $(INC_DIR)/testMakefile.h
$(CC) -c $(SRC_DIR)/testMakefile.c
#include "testMakefile.h"
int main(void)
{
int i;
for (i = 0; i < MAX_NUM; i++)
{
printf("Hello world!\n");
}
return 0;
}
#include <stdlib.h>
#include <stdio.h>
#define MAX_NUM 10
INC_DIR = -I$(TOP_DIR)/inc
,这时错误又变成了:testMakefile.o: $(INC_DIR)/testMakefile.h
$(CC) -c $(SRC_DIR)/testMakefile.c
将头文件写在了生成规则那一行,但是写在这一行并不能让gcc编译的时候定位到那一个头文件,所以,应该在gcc编译的指令后面明确给出头文件路径,也就是将 -I$(INC_DIR)/inc添加到gcc指令那一行。
另外,关于$()和${}的区别,好像$()是优先执行()里面的命令,而${}则是用{}将其中的变量名引用,但是在《GNU make中文手册》的变量这一章中说在引用变量时这两种写法都可以……[/quote]testMakefile.o: $(INC_DIR)/testMakefile.h
$(CC) -c $(SRC_DIR)/testMakefile.c
将头文件写在了生成规则那一行,但是写在这一行并不能让gcc编译的时候定位到那一个头文件,所以,应该在gcc编译的指令后面明确给出头文件路径,也就是将 -I$(INC_DIR)/inc添加到gcc指令那一行。
另外,关于$()和${}的区别,好像$()是优先执行()里面的命令,而${}则是用{}将其中的变量名引用,但是在《GNU make中文手册》的变量这一章中说在引用变量时这两种写法都可以……
CC = gcc
CFLAGS = -g -Wall
CUR_DIR = $(shell pwd)
TOP_DIR = $(CUR_DIR)/..
SRC_DIR = $(TOP_DIR)/src
INC_DIR = $(TOP_DIR)/inc
main: testMakefile.o
$(CC) -o main testMakefile.o
testMakefile.o: ${INC_DIR}/testMakefile.h
$(CC) -c ${SRC_DIR}/testMakefile.c -I${DIR_INC}
您好,我仔细看了一下,好像没什么不妥呀。您可以详细解释一下吗?[/quote]