linux下C工程层级目录的Makefile编写
2013-04-25 15:42
288 查看
以前在ubuntu的gcc写小型的测试程序,都是直接调用gcc命令及其选项,突然有想完成稍大的工程的冲动,于是用了下makefile,果然强大。
目录包含 bin src inc lib obj , makefile文件与它们同级,是事先设置好的,以下为源码文件:
exchange.h
exchange.c
main.c
Makefile
Makefile文件指定了工程目录中层级文件的依赖关系和目标文件的输出路径。我用path定义文件搜索路径 与 Makefile中路径变量 同时存在时曾出现“make 放弃循环依赖...“的警告,折腾半天时间,最后注销掉vpath命令就好了,不知为什么!
工程目录下载地址
目录包含 bin src inc lib obj , makefile文件与它们同级,是事先设置好的,以下为源码文件:
exchange.h
#ifndef _EXCHANGE_H_ #define _EXCHANGE_H_ int exchange(int *xp, int y); #endif
exchange.c
#include "../inc/exchange.h" int exchange(int *xp, int y) { int x = *xp; *xp = y; return x; }
main.c
#include <stdio.h> int main() { int a = 3; int b = exchange(&a, 4); printf("a = %d, b = %d\n", a, b); return 0; }
Makefile
# 编译变量赋值 CC = gcc AR = ar rc # 打包生成静态库 RM = rm -f #vpath %.h ./inc #vpath %.c ./src # 设置路径变量 CUR_DIR = $(shell pwd) BIN_DIR = $(CUR_DIR)/bin/ SRC_DIR = $(CUR_DIR)/src/ LIB_DIR = $(CUR_DIR)/lib/ INC_DIR = $(CUR_DIR)/inc/ OBJ_DIR = $(CUR_DIR)/obj/ $(BIN_DIR)main.exe : $(OBJ_DIR)main.o $(LIB_DIR)exchange.a $(CC) $(OBJ_DIR)main.o $(LIB_DIR)exchange.a -o $(BIN_DIR)main.exe $(OBJ_DIR)main.o : $(SRC_DIR)main.c $(CC) -c $(SRC_DIR)main.c -o $(OBJ_DIR)main.o $(LIB_DIR)exchange.a : $(OBJ_DIR)exchange.o $(AR) $(LIB_DIR)exchange.a $(OBJ_DIR)exchange.o $(OBJ_DIR)exchange.o : $(SRC_DIR)exchange.c $(CC) -c $(SRC_DIR)exchange.c -o $(OBJ_DIR)exchange.o .PHONY : clean clean: rm -f ./obj/*.o ./bin/* ./lib/*.a
Makefile文件指定了工程目录中层级文件的依赖关系和目标文件的输出路径。我用path定义文件搜索路径 与 Makefile中路径变量 同时存在时曾出现“make 放弃循环依赖...“的警告,折腾半天时间,最后注销掉vpath命令就好了,不知为什么!
工程目录下载地址
相关文章推荐
- linux下编写opencv工程的makefile
- Linux相关-------简单工程Makefile的编写
- Linux Makefile多目录的编写
- Linux下多目录的Makefile编写
- 多目录工程构建Makefile的编写
- linux Makefile : 编译包含非当前目录的工程
- 一个较为通用的linux工程目录架构和Makefile
- makefile 进阶--可以用于实际嵌入式工程中的文件编写2目录引入
- Linux Makefile多目录的编写
- makefile编写---多目录工程范例
- (转)Linux中gcc g++常用编译选项以及makefile的编写
- 多目录时Makefile 的编写方法
- Unix/Linux 平台Makefile文件的基础编写
- linux中C的Makefile多个文件目录,以及VPATH的简单示例
- Linux平台Makefile文件的编写基础篇 (转载)
- Linux平台Makefile文件的编写基础篇
- linux2.6驱动makefile的编写和驱动编写快速参考
- Linux动态库与静态库以及简单makefile的编写
- Linux下编写makefile文件
- cmake使用总结(一)---工程主目录CMakeList文件编写