我接下来没有Makefiles的经验,我正在努力学习 - 而且我理解其中的大部分内容。但是,我有一个像这样的目录结构:
/src/
/mysql/
mp_mysql.h
mp_mysql.c
/sqlite/
mp_sqlite.h
mp_sqlite.c
/lib/
mysql.so
sqlite.so
我正在尝试编写一个makefile,将/src/mysql
中的文件编译成/lib/mysql.so
,并对sqlite执行相同操作。如果有人帮我的话,我可能会得到它!谢谢!
P.S。该项目是一个Python项目,我正在用C语言为MySQL编写一个特殊的适配器。我在网上找到的所有资源都无法开始工作和/或工作来创建一个大的可执行文件。
答案 0 :(得分:0)
首先,为每个目录编写一个Makefile并定义一个DIR_BUILD变量,在调用make
时可以覆盖该变量。
然后,编写一个运行每个子Makefile的项目Makefile。
例如,
DIR_BUILD = '.'
mysql.so: mp_mysql.c mp_mysql.h
gcc $< -o $(DIR_BUILD)/$@
和,对于父Makefile:
SUBDIRS = `find . -mindepth 1 -maxdepth 1 -type d`
all:
for d in $(SUBDIRS); \
do \
$(MAKE) --directory=$$d DIR_BUILD=../lib; \
done
没有guarentees,让我知道它是怎么回事!