hello └─src │ hello.c │ hello.h │ main.c │ Makefile.am │ └─extfunc extfunc.c extfunc.h Makefile.ammain.c から extfunc.c 内の関数をコールするようにしている。
#include "hello.h" #include "extfunc/extfunc.h" int main(void) { say_hello(); test(); extfunc(); return 0; }Example 1. extfunc.c
#include "extfunc.h" int extfunc(void) { printf("extfunc is called!!\n"); return 0; }Example 2. extfunc.h
#ifndef __EXTFUNC_H__ #define __EXTFUNC_H__ extern int extfunc(void); #endif /* __EXTFUNC_H__ */automake では直接サブディレクトリのソースを取り込んでコンパイルすることができないようなので、extfunc ディレクトリ内のオブジェクトはライブラリにして最後にリンクさせるようにする。
Example 3. src/extfunc/Makefile.am
noinst_LIBRARIES = libextfunc.a libextfunc_a_SOURCES = extfunc.cExample 4. src/Makefile.am
bin_PROGRAMS = hello hello_SOURCES = hello.c hello.h main.c hello_LDADD = extfunc/libextfunc.a SUBDIRS = extfuncLDADD を使用するために configure.ac に AC_PROG_RANLIB を追加する必要がある。そのため automake を行うスクリプトも修正する。
#!/bin/bash -v autoscan sed -e "s/FULL-PACKAGE-NAME/hello/g" -e "s/VERSION/1.0/g" -e "s/BUG-REPORT-ADDRESS/hoge@hogehoge/g" -e "6 i AM_INIT_AUTOMAKE([foreign])" -e "$ i AC_PROG_RANLIB" configure.scan > configure.ac autoheader aclocal automake --add-missing --copy autoconf ./configure
sed -e "$ i AC_PROG_RANLIB" configure.scan > configure.acで configure.scan の最後の行に AC_PROG_RANLIB を追加している。
0 件のコメント:
コメントを投稿