1
我正在寫一個實用程序庫libdog-dev
與d語言編程,這裏是Makefile.am
:如何在Makefile.am中包含從D源生成的靜態庫?
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 [email protected] -op -Hdi386/include/ `find src/ -name '*.d'`
x86_64/libdog.a:
mkdir -p x86_64
dmd -lib -m64 [email protected] -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
和AC_PROG_RANLIB
,configure.ac
,這應該是不必要的,因爲這個項目中沒有c/C++源代碼。缺少這兩條語句將導致錯誤。我只能在
Makefile.am
中包含單個libdog.a
。我有註釋掉的代碼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
我在Makefile源已經硬編碼拱名
i386-linux-gnu
和x86_64-linux-gnu
,但是,它應該以某種方式產生..?