如何为多目录源文件建立makefile
来源:互联网 发布:女士44号运动鞋淘宝 编辑:程序博客网 时间:2024/06/06 07:49
只能举例说明:
1、代码源文件目录关系如下
manyFiletest/
Complex/
Complex.h
Complex.m
Fraction/
Fraction.h
Fraction.m
Main.m
2、实践环境:GNUStep工具;代码语言:Objective-C
3、在manyFiletest建立manyfile.makefile
内如如下:
CC = gcc
CFLAGS = -g
LIBS = -lobjc -lgnustep-base
SRC=Complex/Complex.m Complex/Complex.h Fraction/Fraction.m Fraction/Fraction.h Main.m
OBJ=Complex/Complex.o Fraction/Fraction.o Main.o
HeaderPath=-I/GNUstep/System/Library/Headers
LibraryPath=-L/GNUstep/System/Library/Libraries
Constant=-fconstant-string-class=NSConstantString
ComplexMain:$(OBJ)
$(CC) -o ComplexMain $(OBJ) $(HeaderPath) $(Constant) $(LibraryPath) $(LIBS)
Complex/Complex.o:Complex/Complex.m Complex/Complex.h
$(CC) -o Complex/Complex.o -c Complex/Complex.m $(HeaderPath) $(Constant) $(LibraryPath) $(LIBS)
Fraction/Fraction.o:Fraction/Fraction.m Fraction/Fraction.h
$(CC) -o Fraction/Fraction.o -c Fraction/Fraction.m $(HeaderPath) $(Constant) $(LibraryPath) $(LIBS)
Main.o:main.m Fraction/Fraction.h Complex/Complex.h
$(CC) -c main.m $(HeaderPath) $(Constant) $(LibraryPath) $(LIBS)
clean:
rm ComplexMain $(OBJ)
make -f manyfile.makefile
实践结果如下图目录文件:
manyFiletest/
Complex/
Complex.h
Complex.m
Complex.o 生成
Fraction/
Fraction.h
Fraction.m
Fraction.o 生成
Main.m
Main.o 生成
ComplexMain.exe 生成
manyfile.makefile
也就是说目标文件创建在各自的目录下的
注意,在此makefile中
Complex/Complex.o:Complex/Complex.m Complex/Complex.h
$(CC) -o Complex/Complex.o -c Complex/Complex.m $(HeaderPath) $(Constant) $(LibraryPath) $(LIBS)
如果要把目标文件创建在各自目下,需要-o Complex/Complex.o,且Complex/Complex.o:不能写成Complex.o:
4、为了简化manyfile.makefile,可以如下编写,新建manyfile01.makefile
CC = gcc
CFLAGS = -g
LIBS = -lobjc -lgnustep-base
HeaderPath=-I/GNUstep/System/Library/Headers
LibraryPath=-L/GNUstep/System/Library/Libraries
Constant=-fconstant-string-class=NSConstantString
P1=Complex/
P2=Fraction/
SRC=$(P1)Complex.m $(P1)Complex.h $(P2)Fraction.m $(P2)Fraction.h Main.m
OBJ=$(P1)Complex.o $(P2)Fraction.o Main.o
ComplexMain:$(OBJ)
$(CC) -o ComplexMain $(OBJ) $(HeaderPath) $(Constant) $(LibraryPath) $(LIBS)
$(P1)Complex.o:$(P1)Complex.m $(P1)Complex.h
$(CC) -o $(P1)Complex.o -c $(P1)Complex.m $(HeaderPath) $(Constant) $(LibraryPath) $(LIBS)
$(P2)Fraction.o:$(P2)Fraction.m $(P2)Fraction.h
$(CC) -o $(P2)Fraction.o -c $(P2)Fraction.m $(HeaderPath) $(Constant) $(LibraryPath) $(LIBS)
Main.o:main.m $(P2)Fraction.h $(P1)Complex.h
$(CC) -c main.m $(HeaderPath) $(Constant) $(LibraryPath) $(LIBS)
clean:
rm ComplexMain $(OBJ)
你可发现
P1=Complex/
P2=Fraction/
替换了对应的目录
使用make -f manyfile01.makefile也是成功的,目录效果同manyfile.makefile
5、继续实践
把所有目标文件建立在同一目录下
manyfile02.makefile
内容如下:
CC = gcc
CFLAGS = -g
LIBS = -lobjc -lgnustep-base
SRC=Complex/Complex.m Complex/Complex.h Fraction/Fraction.m Fraction/Fraction.h Main.m
OBJ=Complex.o Fraction.o Main.o
HeaderPath=-I/GNUstep/System/Library/Headers
LibraryPath=-L/GNUstep/System/Library/Libraries
Constant=-fconstant-string-class=NSConstantString
ComplexMain:$(OBJ)
$(CC) -o ComplexMain $(OBJ) $(HeaderPath) $(Constant) $(LibraryPath) $(LIBS)
Complex.o:Complex/Complex.m Complex/Complex.h
$(CC) -c Complex/Complex.m $(HeaderPath) $(Constant) $(LibraryPath) $(LIBS)
Fraction.o:Fraction/Fraction.m Fraction/Fraction.h
$(CC) -c Fraction/Fraction.m $(HeaderPath) $(Constant) $(LibraryPath) $(LIBS)
Main.o:main.m Fraction/Fraction.h Complex/Complex.h
$(CC) -c main.m $(HeaderPath) $(Constant) $(LibraryPath) $(LIBS)
clean:
rm ComplexMain $(OBJ)
make -f manyfile02.makefile
实践结果如下图目录文件:
manyFiletest/
Complex/
Complex.h
Complex.m
Fraction/
Fraction.h
Fraction.m
Main.m
Main.o 生成
ComplexMain.exe 生成
Fraction.o 生成
Complex.o 生成
manyfile.makefile
manyfile01.makefile
manyfile02.makefile
6、为了让gcc输出到特定的目录上
manyfile03.makefile
内容如下:
CC = gcc
CFLAGS = -g
LIBS = -lobjc -lgnustep-base
HeaderPath=-I/GNUstep/System/Library/Headers
LibraryPath=-L/GNUstep/System/Library/Libraries
Constant=-fconstant-string-class=NSConstantString
P1=Complex/
P2=Fraction/
ComplieOut=Out/
SRC=$(P1)Complex.m $(P1)Complex.h $(P2)Fraction.m $(P2)Fraction.h Main.m
OBJ=$(ComplieOut)Complex.o $(ComplieOut)Fraction.o $(ComplieOut)Main.o
$(ComplieOut)ComplexMain:$(OBJ)
$(CC) -o $(ComplieOut)ComplexMain $(OBJ) $(HeaderPath) $(Constant) $(LibraryPath) $(LIBS)
$(ComplieOut)Complex.o:$(P1)Complex.m $(P1)Complex.h
$(CC) -o $(ComplieOut)Complex.o -c $(P1)Complex.m $(HeaderPath) $(Constant) $(LibraryPath) $(LIBS)
$(ComplieOut)Fraction.o:$(P2)Fraction.m $(P2)Fraction.h
$(CC) -o $(ComplieOut)Fraction.o -c $(P2)Fraction.m $(HeaderPath) $(Constant) $(LibraryPath) $(LIBS)
$(ComplieOut)Main.o:main.m $(P2)Fraction.h $(P1)Complex.h
$(CC) -o $(ComplieOut)Main.o -c main.m $(HeaderPath) $(Constant) $(LibraryPath) $(LIBS)
clean:
rm ComplexMain $(OBJ)
首先要先建立输出目录,与makefile同目录下
编译效果目录关系效果如下:
manyFiletest/
Complex/
Complex.h
Complex.m
Fraction/
Fraction.h
Fraction.m
Main.m
manyfile.makefile
manyfile01.makefile
manyfile02.makefile
manyfile03.makefile
Out/
Main.o 生成
ComplexMain.exe 生成
Fraction.o 生成
Complex.o 生成
1、代码源文件目录关系如下
manyFiletest/
Complex/
Complex.h
Complex.m
Fraction/
Fraction.h
Fraction.m
Main.m
2、实践环境:GNUStep工具;代码语言:Objective-C
3、在manyFiletest建立manyfile.makefile
内如如下:
CC = gcc
CFLAGS = -g
LIBS = -lobjc -lgnustep-base
SRC=Complex/Complex.m Complex/Complex.h Fraction/Fraction.m Fraction/Fraction.h Main.m
OBJ=Complex/Complex.o Fraction/Fraction.o Main.o
HeaderPath=-I/GNUstep/System/Library/Headers
LibraryPath=-L/GNUstep/System/Library/Libraries
Constant=-fconstant-string-class=NSConstantString
ComplexMain:$(OBJ)
$(CC) -o ComplexMain $(OBJ) $(HeaderPath) $(Constant) $(LibraryPath) $(LIBS)
Complex/Complex.o:Complex/Complex.m Complex/Complex.h
$(CC) -o Complex/Complex.o -c Complex/Complex.m $(HeaderPath) $(Constant) $(LibraryPath) $(LIBS)
Fraction/Fraction.o:Fraction/Fraction.m Fraction/Fraction.h
$(CC) -o Fraction/Fraction.o -c Fraction/Fraction.m $(HeaderPath) $(Constant) $(LibraryPath) $(LIBS)
Main.o:main.m Fraction/Fraction.h Complex/Complex.h
$(CC) -c main.m $(HeaderPath) $(Constant) $(LibraryPath) $(LIBS)
clean:
rm ComplexMain $(OBJ)
make -f manyfile.makefile
实践结果如下图目录文件:
manyFiletest/
Complex/
Complex.h
Complex.m
Complex.o 生成
Fraction/
Fraction.h
Fraction.m
Fraction.o 生成
Main.m
Main.o 生成
ComplexMain.exe 生成
manyfile.makefile
也就是说目标文件创建在各自的目录下的
注意,在此makefile中
Complex/Complex.o:Complex/Complex.m Complex/Complex.h
$(CC) -o Complex/Complex.o -c Complex/Complex.m $(HeaderPath) $(Constant) $(LibraryPath) $(LIBS)
如果要把目标文件创建在各自目下,需要-o Complex/Complex.o,且Complex/Complex.o:不能写成Complex.o:
4、为了简化manyfile.makefile,可以如下编写,新建manyfile01.makefile
CC = gcc
CFLAGS = -g
LIBS = -lobjc -lgnustep-base
HeaderPath=-I/GNUstep/System/Library/Headers
LibraryPath=-L/GNUstep/System/Library/Libraries
Constant=-fconstant-string-class=NSConstantString
P1=Complex/
P2=Fraction/
SRC=$(P1)Complex.m $(P1)Complex.h $(P2)Fraction.m $(P2)Fraction.h Main.m
OBJ=$(P1)Complex.o $(P2)Fraction.o Main.o
ComplexMain:$(OBJ)
$(CC) -o ComplexMain $(OBJ) $(HeaderPath) $(Constant) $(LibraryPath) $(LIBS)
$(P1)Complex.o:$(P1)Complex.m $(P1)Complex.h
$(CC) -o $(P1)Complex.o -c $(P1)Complex.m $(HeaderPath) $(Constant) $(LibraryPath) $(LIBS)
$(P2)Fraction.o:$(P2)Fraction.m $(P2)Fraction.h
$(CC) -o $(P2)Fraction.o -c $(P2)Fraction.m $(HeaderPath) $(Constant) $(LibraryPath) $(LIBS)
Main.o:main.m $(P2)Fraction.h $(P1)Complex.h
$(CC) -c main.m $(HeaderPath) $(Constant) $(LibraryPath) $(LIBS)
clean:
rm ComplexMain $(OBJ)
你可发现
P1=Complex/
P2=Fraction/
替换了对应的目录
使用make -f manyfile01.makefile也是成功的,目录效果同manyfile.makefile
5、继续实践
把所有目标文件建立在同一目录下
manyfile02.makefile
内容如下:
CC = gcc
CFLAGS = -g
LIBS = -lobjc -lgnustep-base
SRC=Complex/Complex.m Complex/Complex.h Fraction/Fraction.m Fraction/Fraction.h Main.m
OBJ=Complex.o Fraction.o Main.o
HeaderPath=-I/GNUstep/System/Library/Headers
LibraryPath=-L/GNUstep/System/Library/Libraries
Constant=-fconstant-string-class=NSConstantString
ComplexMain:$(OBJ)
$(CC) -o ComplexMain $(OBJ) $(HeaderPath) $(Constant) $(LibraryPath) $(LIBS)
Complex.o:Complex/Complex.m Complex/Complex.h
$(CC) -c Complex/Complex.m $(HeaderPath) $(Constant) $(LibraryPath) $(LIBS)
Fraction.o:Fraction/Fraction.m Fraction/Fraction.h
$(CC) -c Fraction/Fraction.m $(HeaderPath) $(Constant) $(LibraryPath) $(LIBS)
Main.o:main.m Fraction/Fraction.h Complex/Complex.h
$(CC) -c main.m $(HeaderPath) $(Constant) $(LibraryPath) $(LIBS)
clean:
rm ComplexMain $(OBJ)
make -f manyfile02.makefile
实践结果如下图目录文件:
manyFiletest/
Complex/
Complex.h
Complex.m
Fraction/
Fraction.h
Fraction.m
Main.m
Main.o 生成
ComplexMain.exe 生成
Fraction.o 生成
Complex.o 生成
manyfile.makefile
manyfile01.makefile
manyfile02.makefile
6、为了让gcc输出到特定的目录上
manyfile03.makefile
内容如下:
CC = gcc
CFLAGS = -g
LIBS = -lobjc -lgnustep-base
HeaderPath=-I/GNUstep/System/Library/Headers
LibraryPath=-L/GNUstep/System/Library/Libraries
Constant=-fconstant-string-class=NSConstantString
P1=Complex/
P2=Fraction/
ComplieOut=Out/
SRC=$(P1)Complex.m $(P1)Complex.h $(P2)Fraction.m $(P2)Fraction.h Main.m
OBJ=$(ComplieOut)Complex.o $(ComplieOut)Fraction.o $(ComplieOut)Main.o
$(ComplieOut)ComplexMain:$(OBJ)
$(CC) -o $(ComplieOut)ComplexMain $(OBJ) $(HeaderPath) $(Constant) $(LibraryPath) $(LIBS)
$(ComplieOut)Complex.o:$(P1)Complex.m $(P1)Complex.h
$(CC) -o $(ComplieOut)Complex.o -c $(P1)Complex.m $(HeaderPath) $(Constant) $(LibraryPath) $(LIBS)
$(ComplieOut)Fraction.o:$(P2)Fraction.m $(P2)Fraction.h
$(CC) -o $(ComplieOut)Fraction.o -c $(P2)Fraction.m $(HeaderPath) $(Constant) $(LibraryPath) $(LIBS)
$(ComplieOut)Main.o:main.m $(P2)Fraction.h $(P1)Complex.h
$(CC) -o $(ComplieOut)Main.o -c main.m $(HeaderPath) $(Constant) $(LibraryPath) $(LIBS)
clean:
rm ComplexMain $(OBJ)
首先要先建立输出目录,与makefile同目录下
编译效果目录关系效果如下:
manyFiletest/
Complex/
Complex.h
Complex.m
Fraction/
Fraction.h
Fraction.m
Main.m
manyfile.makefile
manyfile01.makefile
manyfile02.makefile
manyfile03.makefile
Out/
Main.o 生成
ComplexMain.exe 生成
Fraction.o 生成
Complex.o 生成
- 如何为多目录源文件建立makefile
- 多目录多源文件的驱动Makefile模板
- 一个模块包含多目录和源文件,Makefile写法
- makefile 获取指定目录下源文件名称
- makefile 获取指定目录下源文件名称
- makefile 获取指定目录下源文件名称
- Makefile为源文件提供宏定义
- Linux多源文件Makefile模版
- 如何构建多目录的Makefile样例
- 有C++源文件,如何建立dll文件
- 【转】makefile 获取指定目录下源文件名称
- 【转】makefile 获取指定目录下源文件名称
- #linux学习笔记#makefile与源文件不一目录解决办法
- makefile——自动编译src目录下所有源文件
- 如何建立共享目录
- 一点一点学写Makefile(6)-遍历当前目录源文件及其子目录下源文件
- 一点一点学写Makefile(6)-遍历当前目录源文件及其子目录下源文件
- 多源文件的linux驱动Makefile编写
- uC/OS-II的信号量及其操作
- 整理了常用的Xcode快捷键
- C++的输出精度控制
- Union和Union All的区别
- Ubuntu安装wxgtk
- 如何为多目录源文件建立makefile
- servlet中web.xml配置详解
- java中list里面存放map,根据map中的某一个字段进行排序
- hdu3127
- ftrace 简介
- SQL 实现定期备份数据库
- 有趣的javascript应用
- 检测到有潜在危险的Request.Form 值 解决方法
- SNA架构