2008年07月13日(Sun) [長年日記]
● [memo] luvcview (quickcamteam.net) を作ってみる
たぶん標準的な*1パッケージ構成のUbuntu 8.04に追加でインストールしたのは、libsdl1.2-dev。
あと、Linux UVC driver & toolsより、svn://svn.berlios.de/linux-uvc/linux-uvc/trunkをcheckoutし、libwebcamより、http://svn.quickcamteam.net/svn/qct/Linux/をcheckout。READMEのとおり、一部のヘッダファイルをsymlinkした。
*1 このご時勢コンパイラが入ってたら標準的とは言えないのかな
● 野良ビルドのluvcviewはUbuntu提供のluvcviewと違ってioctl()がInvalid argumentを返す。なぜ…
● [memo] autotoolsで管理するプロジェクトを始めてみる
久しぶりにやろうとすると忘れてしまっていることに気づく。 一度メモしておこう。下記の手順が正しいとは限らないのでご注意ください。
Ubuntuの場合は開発ツールがぜんぜん入ってない。僕の場合は、 automakeを入れる必要があった。
まずdoc/、src/、test/をつくってsrc/に適当にファイルを配置する。
autoscanでconfigure.scanを作ってもらえるので、configure.inに改名して、 FULL-PACKAGE-NAME、VERSION、BUG-REPORT-ADDRESSを編集する。
Makefile.amを作って、SUBDIRS = . test、 test/Makefile.amのcheck_PROGRAMSにとりあえず作ったテストプログラムを書く。 INCLUDES = -I$(top_srcdir)/src も追加。 (追記) TESTS = にも追加しないとmake checkで走らせてくれない。
automakeする。configure.inにAM_INIT_AUTOMAKEが無いと怒られるので、 AM_INIT_AUTOMAKE($PACKAGE_NAME, $PACKAGE_VERISION) という行を追加する。
automakeする。aclocal.m4が無いと言われるのでaclocalする。
automakeする。install-shが無いと言われるので、automake --add-missingする。
automakeする。AC_CONFIG_FILES([Makefile])が無いと言われるので、 AC_CONFIG_FILES([test/Makefile]) という行と一緒にconfigure.inに追加する。
automakeする。INSTALLが無いと言われるのでautomaek --add-missingする。 COPYINGとしてGPL3がsymlinkされる(Ubuntu)。えええっ!?
automakeする。NEWS、README、AUTHORS、ChangeLogが無いといれる。 COPYINGも一緒に編集する。
automakeする。Makefile.inとtest/Makefile.inができる。
この状態でautoreconfすると、configureができるので実行してみる。 config.h、Makefile、test/Makefileができる。
これで、make checkが走るようになる。 ここで悩ましいのはどこまでレポジトリに登録しておくか。 他のマシンでcheckoutしてすぐ./configureできるようにしたいと思って、 手で書いたファイル以外に、 スクリプト: depcomp missing install-sh aclocal.m4、 生成ファイル: configure Makefile.in test/Makefile.in をsvn addしてみた。 次はコードのtypoの修正から。
● automakeとsubversionを使うプロジェクトでmake commitできるようにする
下記をトップディレクトリのMakefile.amに追記しておくと、 ChangeLogの最初のパラグラフ(空行まで)をcommit logとしてcommitしてくれる。
前にも書いたような気がするけど。
● error: expected expression before `struct’
V4L2のioctl(2) APIを呼ぶコードが、上記のコンパイルエラーをもらった。 linux/videodev2.hをincludeしてプリプロセッサだけを通すと、下記のようなコードに展開されていた。
_IOWRって何?というわけで、加えて、linux/ioctl.hをincludeするようにしたらコンパイルできるようになった。
最近のツッコまれどころ