当前位置: 技术问答>linux和unix
求pro c++ 的makefile( c++/ oracle10.0/ EXEC SQL/ AIX)在线等
来源: 互联网 发布时间:2016-06-14
本文导语: 求pro c++ 的makefile( c++/ oracle10.0/ EXEC SQL/ AIX): 三个文件:unistat.cpp 主函数(调用stat_func.cpp中的函数) stat_func.h 头文件(包含函数、类、常量的定义或声明) ...
求pro c++ 的makefile( c++/ oracle10.0/ EXEC SQL/ AIX):
三个文件:unistat.cpp 主函数(调用stat_func.cpp中的函数)
stat_func.h 头文件(包含函数、类、常量的定义或声明)
stat_func.cpp 功能函数(包含 EXEC SQL
EXEC SQL PREPARE ld_p FROM :l_ldcmd.c_str();
EXEC SQL DECLARE ld_cur CURSOR FOR ld_p;
EXEC SQL OPEN ld_cur;
EXEC SQL FETCH ld_cur INTO :l_lday; )
请问这个Makefile 如何写?
三个文件:unistat.cpp 主函数(调用stat_func.cpp中的函数)
stat_func.h 头文件(包含函数、类、常量的定义或声明)
stat_func.cpp 功能函数(包含 EXEC SQL
EXEC SQL PREPARE ld_p FROM :l_ldcmd.c_str();
EXEC SQL DECLARE ld_cur CURSOR FOR ld_p;
EXEC SQL OPEN ld_cur;
EXEC SQL FETCH ld_cur INTO :l_lday; )
请问这个Makefile 如何写?
|
binexec := binexec
subdirs := . src
sources := $(foreach subdir, $(subdirs), $(wildcard $(subdir)/*.cpp))
headers := $(foreach subdir, $(subdirs), $(wildcard $(subdir)/*.h))
objects := $(sources:.c=.o)
deps := $(sources:.c=.d)
INCLUDE := $(addprefix -I, $(subdirs))
CFLAGS := #-Wall -O2 -MMD $(INCLUDE)
RM := rm -f
TAR := tar
GZIP := gzip
me := Makefile
all: $(binexec)
binexec:$(objects)
$(CC) -o $@ $(objects) $(LDFLAGS) $(LDLIBS)
dist:
pkg=`pwd`; tar cvf - $(me) $(sources) $(headers)
| $(GZIP) -c > `basename $${pkg}`.tar.gz
clean:
$(RM) $(objects)
$(RM) $(deps)
$(RM) $(binexec)
自动编译目录下所有文件的 makefile, 你自己略作修改就可以了。
subdirs := . src
sources := $(foreach subdir, $(subdirs), $(wildcard $(subdir)/*.cpp))
headers := $(foreach subdir, $(subdirs), $(wildcard $(subdir)/*.h))
objects := $(sources:.c=.o)
deps := $(sources:.c=.d)
INCLUDE := $(addprefix -I, $(subdirs))
CFLAGS := #-Wall -O2 -MMD $(INCLUDE)
RM := rm -f
TAR := tar
GZIP := gzip
me := Makefile
all: $(binexec)
binexec:$(objects)
$(CC) -o $@ $(objects) $(LDFLAGS) $(LDLIBS)
dist:
pkg=`pwd`; tar cvf - $(me) $(sources) $(headers)
| $(GZIP) -c > `basename $${pkg}`.tar.gz
clean:
$(RM) $(objects)
$(RM) $(deps)
$(RM) $(binexec)
自动编译目录下所有文件的 makefile, 你自己略作修改就可以了。
|
sources := $(foreach subdir, $(subdirs), $(wildcard $(subdir)/*.cpp))
=====================================================
自动推导出本目录和子目录下的所有 .cpp 文件
headers := $(foreach subdir, $(subdirs), $(wildcard $(subdir)/*.h))
=====================================================
自动推导出本目录和子目录下的所有 .h 文件
objects := $(sources:.cpp=.o)
=====================================================
根据 cpp 文件推导出 .o 文件
deps := $(sources:.c=.d)
INCLUDE := $(addprefix -I, $(subdirs))
=====================================================
-I 指定 ORACLE 头文件 所在的目录
CFLAGS := #-Wall -O2 -MMD $(INCLUDE)
RM := rm -f
TAR := tar
GZIP := gzip
me := Makefile
all: $(binexec)
binexec:$(objects)
$(CC) -o $@ $(objects) $(LDFLAGS) $(LDLIBS)
dist:
pkg=`pwd`; tar cvf - $(me) $(sources) $(headers)
| $(GZIP) -c > `basename $${pkg}`.tar.gz
clean:
$(RM) $(objects)
$(RM) $(deps)
$(RM) $(binexec)
=====================================================
自动推导出本目录和子目录下的所有 .cpp 文件
headers := $(foreach subdir, $(subdirs), $(wildcard $(subdir)/*.h))
=====================================================
自动推导出本目录和子目录下的所有 .h 文件
objects := $(sources:.cpp=.o)
=====================================================
根据 cpp 文件推导出 .o 文件
deps := $(sources:.c=.d)
INCLUDE := $(addprefix -I, $(subdirs))
=====================================================
-I 指定 ORACLE 头文件 所在的目录
CFLAGS := #-Wall -O2 -MMD $(INCLUDE)
RM := rm -f
TAR := tar
GZIP := gzip
me := Makefile
all: $(binexec)
binexec:$(objects)
$(CC) -o $@ $(objects) $(LDFLAGS) $(LDLIBS)
dist:
pkg=`pwd`; tar cvf - $(me) $(sources) $(headers)
| $(GZIP) -c > `basename $${pkg}`.tar.gz
clean:
$(RM) $(objects)
$(RM) $(deps)
$(RM) $(binexec)
|
分析的很好哦,漏掉了三句很有用的,
CFLAGS := -Wall -O2 -MMD $(INCLUDE)
deps := $(sources:.c=.d)
-include $(deps)
有了这三句,在.c文件包含(和间接包含)的.h文件修改以后,.c文件会被重新编译。
|
不会,转个例子你参考一下,看有没有用,呵呵。
Pro*C++的makefile 例子
开发平台是Sun Solaris 2.8,Pro*C++ 8.1.7,安装了gcc 2.95-2, Sun Workshop C++ 6.0,用ANSI C++和Pro*C++ 编程,支持多文件和跨编译器平台开发;对$ORACLE_HOME/precomp/demo/proc/demo_proc.mk做了适当修改 可以供大家参考
include $(ORACLE_HOME)/precomp/lib/env_precomp.mk
# This Makefile is based on $ORACLE_HOME/precomp/demo/proc.mk
# Add the Marco defines
# support Sunworkshop or GNU gcc/g++ compiler
#**************************************
# Targets
#**************************************
test: test.o test1.o test2.o test3.o
$(CCC) -O -o test test1.o test2.o test3.o $(PUBLIC)/*.o -L$(LIBHOME) $(CPPLDLIBS)
#**************************************
# Suffix Rules
#**************************************
.SUFFIXES: .cpp .pc
.cpp.o:
$(CCC) -O -c $(MTFLAG) $(INCLUDE) $