namazu-dev(ring)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

directory restructuring



library化をふまえてディレクトリ構造の再編を考えてみました。

  ...

まず、現在の lib ディレクトリ 
({conf,find,seed,util,codeconv,nmzidx,usage,var,wakati}.pl 
が入っている) は pl に名前を変えた方がいいと思います。(libと
いったら普通は Cのソースでしょう)

それから、

自分 [namazu-dev 521]>
|   memmove strcasecmp strncasecmp strchr strstr strdup vsnprintf
| 
| あたりをもらってこようと思います。いかがでしょう?

代替用の関数を定義したファイル 
{memmove,strcasecmp,strncasecmp,strchr,strstr,strdup,vsnprintf}.c 
を src ディレクトリに置くのは気持ちが悪いので、これらは lib 
ディレクトリに置きたいと思います。

ついでに getopt.c, getopt1.c, getopt.h, regex.[ch] も lib ディ
レクトリに移動して、 lib/Makefile.am に

  noinst_LIBRARIES = libnmzut.a
  libnmzut_a_SOURCES = getopt.c, getopt1.c, getopt.h, regex.c regex.h
  # LIBOBJS には AC_REPLACE_FUNCS() の FUNCTION.o が入る
  libnmzut_a_LIBADD = @LIBOBJS@  

と定義して libnmzut.a にまとめるとすっきりするでしょう。
namazu コマンドはこの libnmzut.a を link します。

# 私は perl -i.bak -pe s/foo/bar/g src/*.[ch] を多用するので、
# getopt.c や regex.c などは別のディレクトリにあった方が好都
# 合です。(これらのファイルを間違って変更したくない)

  ...

そして、肝心の libnmz.{a,so} のソースは nmz ディレクトリを新
規に作成して、その下に置けばいいと思います。

まとめると次のようになります。

  src/ - namazu, mknmz, etc. コマンドのソース
  pl/  - mknmz用の .pl ファイル
  lib/ - libnmzut.a のソース (getopt.c, regex.c, memmove.c, etc.)
  nmz/ - libnmz.{a,so} のソース

こんな感じでだいぶすっきりすると思います。
いかがでしょう? > みなさま (特に野首さん)

# 今日中に返事をもらえれば、明日の午前中にでも着手するつもり
# です

-- Satoru Takabayashi