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;
Published: 2009-09-09(Wed) 17:41