- Gauche の 外部パッケージ作成手順のメモです (Gauche v0.9.6 の場合)。
(情報が古くなっている可能性があります)
-
Gauche のインストール
事前に Gauche がインストールされている必要があります。
Windows の場合は、以下のページに Windows用バイナリインストーラ があるので
インストールを実施ください。
http://practical-scheme.net/gauche/download-j.html
(すでにインストール済みであれば本手順は不要です) -
開発環境のインストール
C言語の開発環境が必要です。
Windows の場合は、以下のページを参考に、MSYS2/MinGW-w64 (64bit/32bit) の
開発環境をインストールしてください。
https://gist.github.com/Hamayama/eb4b4824ada3ac71beee0c9bb5fa546d
(すでにインストール済みであれば本手順は不要です) -
パッケージの雛形の作成
適当な作業用のフォルダで、
gauche-package generate パッケージ名
のようにコマンドを実行します。
Windows の場合は、以下のように実行してください。
<MSYS2/MinGW-w64 (64bit) 環境の場合>
プログラムメニューから MSYS2 の MinGW 64bit Shell を起動して、以下のコマンドを実行します。
<MSYS2/MinGW-w64 (32bit) 環境の場合>
プログラムメニューから MSYS2 の MinGW 32bit Shell を起動して、以下のコマンドを実行します。
(作業用のフォルダを /c/work とし、パッケージ名を msicon とした場合)cd /c/work gauche-package generate msicon
フォルダ msicon ができて、中に雛形のファイルが生成されます。
-
パッケージ情報の編集
生成された package.scm の内容を編集して、バージョン番号や説明等を記述します。
-
プログラムの作成
以下のファイルを編集して、プログラムを作成します。
(パッケージ名を msicon とした場合)ファイル名内容msicon.c Cの関数を追加します。 msicon.h Cの関数の宣言を追加します。 msiconlib.stub Cの関数を呼び出す手続きを追加します。 msicon.scm 手続きの export を追加します。
あとは普通にモジュールの処理を記述します。test.scm テストを記述します。
-
コンパイル、インストール、テスト
展開したフォルダで、./configure と make install を実行して、インストールを行います。
また、make check でテストを行います。
Windows の場合は、以下のように実行してください。
<MSYS2/MinGW-w64 (64bit) 環境の場合>
プログラムメニューから MSYS2 の MinGW 64bit Shell を起動して、以下のコマンドを実行します。
<MSYS2/MinGW-w64 (32bit) 環境の場合>
プログラムメニューから MSYS2 の MinGW 32bit Shell を起動して、以下のコマンドを実行します。
(作業用のフォルダを /c/work とし、パッケージ名を msicon とした場合)cd /c/work/msicon ./configure # Makefile等を生成します make # コンパイルを実行します make install # Gaucheのライブラリフォルダにインストールします make check # テストを実行します
(注意) Windows の環境によっては、make install を実行すると
「*** ERROR: mkstemp failed」というエラーが発生します。
このエラーは、インストール先のフォルダに書き込み権限がないとき等に発生します。
その場合には、プログラムメニューからの開発環境の起動時に右クリックして、
「管理者として実行」を選択してください。
そして再度上記のコマンドを実行してください。
- 以上です。
-
コメント等に日本語を書く場合には、ファイルの文字コードに注意が必要です。
(UTF-8 (BOMなし) にする) -
参考プロジェクト
https://github.com/Hamayama/msicon
(ただし configure と Makefile.in を一部改造しています
(環境変数の無効化、CFLAGS,CPPFLAGS,LDFLAGS,LIBS,DEF_UNICODE の対応、
Gauche v0.9.4 の対応等を追加しています))
(2018-8-15)