1.高分求教
在m目录下新建makefile文件
内容:
EXE = target
OBJECT = a.o b.o main.o
CFLAGS = -I a/ -I b/
VPATH = a b
$(EXE):$(OBJECT)
gcc -o $(EXE) $(OBJECT)
rm -f $(OBJECT)
main.o : a.h b.h
a.o : a.h
b.o : b.h
.PHONY : clean
clean:
rm -f $(OBJECT)
rm -f $(EXE)
总文件目录
m:
a/ b/ main.c makefile target*
m/a:
a.c a.h
m/b:
b.c b.h
在m目录下执行make命令 生成可执行文件target
ps:你的a.c文件内容少了一行
#include<stdio.h>
#include"a.h"
void a()
{
printf("hello! \n");
}
b.c文件内容也少了一行
#include<stdio.h>
#include"b.h"
void b()
{
printf("everyone. \n");
}
2.makefile:多个目录下makefile 的写法
1、假定.h文件在Header目录里,.c文件在Source目录里,这两个目录文件在Myapp中,Makefile也在Myapp中。
2、Makefile如下。
----------------------------------------------------------------------------------
all: myapp
myapp: main.o b.o c.o
gcc -o myapp main.o b.o c.o
main.o: ./Source/main.c ./Header/a.h
gcc -c ./Source/main.c -I./Header
b.o: ./Source/b.c ./Header/a.h ./Header/b.h
gcc -c ./Source/b.c -I./Header
c.o: ./Source/c.c ./Header/b.h ./Header/c.h
gcc -c ./Source/c.c -I./Header
clean:
rm -f *.o
------------------------------------------------------------
3、话说回来,这样做太麻烦。
3.makefile中怎么通配一个文件夹下的所有源文件
据我所知 自己写 就如你说的“只能一个一个目录的指定如:$(wildcard src/*.cpp) ?”
发个列子吧 胆小精悍:
PROGRAM := VSIM
SOURCES := $(wildcard ./*.c)
SOURCES += $(wildcard ./src/*.c)
OBJS := $(patsubst %.c,%.o,$(SOURCES))
CC := gcc
CFLAGS := -ggdb -Wall -DBUILD_TIME="\"`date`\"" -DDEBUG_
INCLUDE := -I ./simo/inc -I ./simo/inc/platform -I ./simo/src/decode_encode/RSA -I ./simo/src/json/json-c-0.9 -I ./simo/src/db_interface/ram_db
LIB := -lpthread -ldl
.PHONY: clean install
$(PROGRAM): $(OBJS)
$(CC) -o $@ $^ $(LIB)
%.o: %.c
$(CC) -o $@ -c $
4.c文件在不同目录的情况makefile怎么写
c文件在不同目录的情况makefile怎么写
假设有下面几个c++文件:
wherewhen.h wherewhen.c
countdown.h countdown.c 包含了math.h, 需要连接库文件
main.c 主函数, main.c 包含了两个头文件 wherewhen.h and countdown.h
1、第一种编译方法:
g++ -Wall -g wherewhen.c countdown.c main.c -lm -o myprogram
生成可执行文件myprogram
2、第二中编译方法, 分别编译各个文件:
g++ -Wall -g -c wherewhen.c
g++ -Wall -g -c countdown.c
g++ -Wall -g -c main.c
g++ -g wherewhen.o countdown.o main.o -lm -o myprogram
5.编写一个makefile文件主要包含哪些内容
一、Makefile里有什么?
Makefile里主要包含了五个东西:显式规则、隐晦规则、变量定义、文件指示和注释。
1、显式规则。显式规则说明了,如何生成一个或多的的目标文件。这是由Makefile的书写者明显指出,要生成的文件,文件的依赖文件,生成的命令。
2、隐晦规则。由于我们的make有自动推导的功能,所以隐晦的规则可以让我们比较粗糙地简略地书写Makefile,这是由make所支持的。
3、变量的定义。在Makefile中我们要定义一系列的变量,变量一般都是字符串,这个有点你C语言中的宏,当Makefile被执行时,其中的变量都会被扩展到相应的引用位置上。
4、文件指示。其包括了三个部分,一个是在一个Makefile中引用另一个Makefile,就像C语言中的include一样;另一个是指根据某些情况指定Makefile中的有效部分,就像C语言中的预编译#if一样;还有就是定义一个多行的命令。有关这一部分的内容,我会在后续的部分中讲述。
5、注释。Makefile中只有行注释,和UNIX的Shell脚本一样,其注释是用“#”字符,这个就像C/C++中的“//”一样。如果你要在你的Makefile中使用“#”字符,可以用反斜框进行转义,如:“\#”。
最后,还值得一提的是,在Makefile中的命令,必须要以[Tab]键开始。
6.大家来帮我看看怎样写一个这样的Makefile文件,通过Makefile文件编
以下是一个最简单的多文件+makefile的形式
编译采用gcc 你可以修改成你的编译器
三个文件 main.c func.c makefile
main.c
#include <stdio.h>
extern void func();//这个应该放在头文件中的 比如func.h 简单起见 就直接声明了
int main()
{
func();
}func.c
#include <stdio.h>
void func()
{
printf("hello world\n");
}makefile
.PHONY: all main.o func.o
all: main.o func.o
@gcc main.o func.o -o out
main.o: main.c
@gcc -c main.c -o main.o
func.o: func.c
@gcc -c func.c -o func.o所有的都是最简单的
7.makefile怎么编绎不同文件夹的.c和.h
有两种方法:一是你修改系统头文件的文件夹路径和你的源文件夹路径。二是你将两个文件复制到系统指定的文件夹中即可。
你用的是Turbo C吗?如果是,见下图。如果不是,可以参考着去做。
点击Directories,出现下图:
第一行是.h文件所在的目录,你可以根据实际情况进行修改。
第四行是源文件所在目录,你可以根据实际情况修改。
转载请注明出处育才学习网 » makefile怎么写含整个文件夹