我正在编写一个libdog-dev
用于 D 语言编程的实用程序库,这里是Makefile.am
:
sited2dir = /usr/include/d2/site
lib32dir = ${libdir}/i386-linux-gnu
# lib64dir = ${libdir}/x86_64-linux-gnu
lib32_LIBRARIES = \
i386/libdog.a
# lib64_LIBRARIES = \
# x86_64/libdog.a
i386/libdog.a:
mkdir -p i386
dmd -lib -m32 -of$@ -op -Hdi386/include/ `find src/ -name '*.d'`
x86_64/libdog.a:
mkdir -p x86_64
dmd -lib -m64 -of$@ -op -Hdx86_64/include/ `find src/ -name '*.d'`
# Since the header files for i386/x86_64 are the same, let's just pick the i386 one.
install-data-hook:
mkdir -p $(DESTDIR)$(sited2dir)
rsync -av i386-linux-gnu/include/ $(DESTDIR)$(sited2dir)
它正在工作,但是,我仍然不清楚:
我需要包含
AC_PROG_CC
andAC_PROG_RANLIB
inconfigure.ac
,这应该是不必要的,因为这个项目中没有 c/c++ 源代码。缺少这两个语句将导致错误。我只能
libdog.a
在Makefile.am
. 我在上面的代码中注释掉了 x86-64 之一,如果我包含它,automake 将显示错误:cd . && /bin/bash /home/lenik/tasks/1-uni/devel/libdog-dev/missing --run automake-1.11 --gnu Makefile Makefile.am: object `libdog.$(OBJEXT)' created by `x86_64/libdog.c' and `i386/libdog.c' make: *** [Makefile.in] Error 1
我想在一个包中包含 i386 和 x86-64 的两个版本,就像
dmd
Debian 的官方包一样:... (install tree of the dmd-2.059-0 package) |-- lib/ | |-- i386-linux-gnu/ | | `-- libphobos2.a | `-- x86_64-linux-gnu/ | `-- libphobos2.a
我已经硬编码了拱名
i386-linux-gnu
并x86_64-linux-gnu
在 Makefile 源代码中,但是,它应该以某种方式生成..?