0

我几乎没有 Makefile 方面的经验,我正在努力学习——而且我了解其中的大部分内容。但是,我有一个这样的目录结构:

/src/
    /mysql/
        mp_mysql.h
        mp_mysql.c
    /sqlite/
        mp_sqlite.h
        mp_sqlite.c
/lib/
    mysql.so
    sqlite.so

我正在尝试编写一个将文件编译/src/mysql成的makefile,/lib/mysql.so并对sqlite执行相同的操作。如果有人帮助我,我可能会得到它!谢谢!

PS 该项目是一个 Python 项目,我正在用 C 语言为 MySQL 编写一个特殊的适配器。我在网上找到的所有资源都无法开始工作和/或无法制作一个大型可执行文件。

4

1 回答 1

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

没有担保人,让我知道情况如何!

于 2012-05-30T07:43:46.880 回答