使用Python和共享库的复杂Makefile

时间:2012-05-30 07:00:30

标签: c makefile gnu-make

我接下来没有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编写一个特殊的适配器。我在网上找到的所有资源都无法开始工作和/或工作来创建一个大的可执行文件。

1 个答案:

答案 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,让我知道它是怎么回事!