Module::Install::ForC で C のプログラムを簡単に構築する
http://github.com/tokuhirom/p5-module-install-forc
Module::Install のアーキテクチャを利用した configure/SCons 等のサブセットをつくりました。
記法は SCons を参考にしており、Rake のような黒魔術的でとっつきにくい記法ではなく、シンプルでわかりやすい記法になっています(もちろん主観ですが、Rake の記法は Rake を知らない人にとって非常にとっつきにくく、見通しがわるいというのが個人的見解です。慣れても見通しがいいとはおもいませんが。。。)。
Perl Monger がちょっとした C のコードを書くときに便利なのではないかとおもいます。Module::Install をつかってるので inc/ もいっしょに配布すれば、perl5.8.0 以上さえあればうごくということになります。便利です。
最近は SCons をもっぱらつかっていたのですが、Perl で書けた方がファイル操作とかでなやまなくていいので、こういうものをつくってみたというわけ(これは単に perl のライブラリに自分がなれているからというだけ)。
PROBLEM
- I want to write C program.
- I don't want to write plain Makefile
- I don't want to use configure
- fat, hard to write, version problems, etc.
- I love SCons
- but it is written by python
SOLUTION
I wrote Module::Install::ForC. It's based on M::I power and SCons like DSL.
You can write your Makefile.PL like this:
use inc::Module::Install; my $env = env_for_c(); $env->program('sl', ['sl.c']); WriteMakefileForC();
Just this!
Then you will get the following Makefile.
all: sl clean: rm sl sl.o rm Makefile /bin/rm -f try try a.out .out try.[cho] try..o core core.try* try.core* sl: sl.o cc -fstack-protector -L/usr/local/lib -o sl sl.o sl.o: sl.c cc -DDEBUGGING -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c -o sl.o sl.c
And you can construct the shared library.
use inc::Module::Install; my $env = env_for_c(); $env->shared_library('hello' => ['hoge.c']); WriteMakefileForC;