makefile怎么编绎不同文件夹的.c和.h篇1
有两种方法:一是你修改系统头文件的文件夹路径和你的源文件夹路径。二是你将两个文件复制到系统指定的文件夹中即可。
你用的是TurboC吗?如果是,见下图。如果不是,可以参考着去做。
点击Directories,出现下图:
第一行是.h文件所在的目录,你可以根据实际情况进行修改。
第四行是源文件所在目录,你可以根据实际情况修改。
大家来帮我看看怎样写一个这样的Makefile文件,通过Makefile文件编篇2
以下是一个最简单的多文件+makefile的形式
编译采用gcc你可以修改成你的编译器
三个文件main.cfunc.cmakefile
main.c
#include<stdio.h>
externvoidfunc();//这个应该放在头文件中的比如func.h简单起见就直接声明了
intmain()
{
func();
}func.c
#include<stdio.h>
voidfunc()
{
printf("helloworld\n");
}makefile
.PHONY:allmain.ofunc.o
all:main.ofunc.o
@gccmain.ofunc.o-oout
main.o:main.c
@gcc-cmain.c-omain.o
func.o:func.c
@gcc-cfunc.c-ofunc.o所有的都是最简单的
c文件在不同目录的情况makefile怎么写篇3
c文件在不同目录的情况makefile怎么写
假设有下面几个c++文件:
wherewhen.hwherewhen.c
countdown.hcountdown.c包含了math.h,需要连接库文件
main.c主函数,main.c包含了两个头文件wherewhen.handcountdown.h
1、第一种编译方法:
g++-Wall-gwherewhen.ccountdown.cmain.c-lm-omyprogram
生成可执行文件myprogram
2、第二中编译方法,分别编译各个文件:
g++-Wall-g-cwherewhen.c
g++-Wall-g-ccountdown.c
g++-Wall-g-cmain.c
g++-gwherewhen.ocountdown.omain.o-lm-omyprogram
编写一个makefile文件主要包含哪些内容篇4
一、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]键开始。
高分求教篇5
在m目录下新建makefile文件
内容:
EXE=target
OBJECT=a.ob.omain.o
CFLAGS=-Ia/-Ib/
VPATH=ab
$(EXE):$(OBJECT)
gcc-o$(EXE)$(OBJECT)
rm-f$(OBJECT)
main.o:a.hb.h
a.o:a.h
b.o:b.h
.PHONY:clean
clean:
rm-f$(OBJECT)
rm-f$(EXE)
总文件目录
m:
a/b/main.cmakefiletarget*
m/a:
a.ca.h
m/b:
b.cb.h
在m目录下执行make命令生成可执行文件target
ps:你的a.c文件内容少了一行
#include<stdio.h>
#include"a.h"
voida()
{
printf("hello!\n");
}
b.c文件内容也少了一行
#include<stdio.h>
#include"b.h"
voidb()
{
printf("everyone.\n");
}
makefile:多个目录下makefile的写法篇6
1、假定.h文件在Header目录里,.c文件在Source目录里,这两个目录文件在Myapp中,Makefile也在Myapp中。
2、Makefile如下。
----------------------------------------------------------------------------------
all:myapp
myapp:main.ob.oc.o
gcc-omyappmain.ob.oc.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、话说回来,这样做太麻烦。
makefile中怎么通配一个文件夹下的所有源文件篇7
据我所知自己写就如你说的“只能一个一个目录的指定如:$(wildcardsrc/*.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:cleaninstall
$(PROGRAM):$(OBJS)
$(CC)-o[email protected]$^$(LIB)
%.o:%.c
$(CC)-o[email protected]-c$