「pd-lib-builder」というもので、macOSでコンパイルできました。
最初は「helloworld」がシンプルです。
これから説明するものは、基本的に以下のgithubにある説明をやってみたものです。
git clone --recursive https://github.com/pure-data/helloworld.git
cd helloworld
make
ターミナルでコマンドを入力します。
インターネットにつながっているとmacOSの「ホーム」に「helloworld」フォルダがダウンロードされます。
ホームの場所は、Finderから「移動>ホーム」で確認できます。
cd helloworld
git submodule init
git submodule update
helloworldフォルダに入り、サブモジュールのイニシャライズ、アップデートを確認します。
サブモジュールのイニシャライズとアップデートの確認は、git cloneするとき「--recursive」フラグをつけた場合は不要ですが、つけ忘れた場合は手動で行います。
現在の階層が、helloworldフォルダにいることを確認し、ターミナルで以下を実行します。
make install pdincludepath=../pure-data/src/ objectsdir=./build
エラーがでていますが、これはあとで修正します。
実はhelloworldのサンプルは、エラーが出るものの、ビルドされてPdオブジェクトが書き出されました。
しかし、C言語を書き換えると「m_pd.h」が読み込めないため、エラーが出ることがあります。のちほど修正します。
もしかすると僕だけかもしれないので、エラーで進めない人はこのページの下にある「エラーの修正」を行ってください。
「build」フォルダが生成されました。
buildフォルダの中をみると、さらに「helloworld」フォルダが生成されていて、いくつかのファイルが書き出されました。
このなかの「helloworld.pd_darwin」というのがビルドされたものになります。windowsやlinuxの場合は、拡張子が異なります。
ビルドされたオブジェクトを使うには「helloworld-help.pd」をダブルクリックして、Pdで開きます。
「helloworld-help.pd」をPdで開いたところです。
「bang」を押すと「Hello world!」と表示されました。
さきほどのエラーを解決しておきます。
これは、「m_pd.h」というファイルが指定した場所に存在しないという意味で、Pdのオブジェクトには必須のものです。
解決するには、Pdのソースをまるごとダウンロードし、helloworldと同じ階層に置きます。
Pdのソースを入手するには
ターミナルで「cd」でホームに戻り、Pdのソースをダウンロードします。
これでホームに「pure-data」フォルダに入ったソースが一式ダウンロードされます。
cd
git clone git://git.code.sf.net/p/pure-data/pure-data
「helloworld」と「pure-data」が同じ階層にある状態になります。
これで、ビルドのエラーは解決できるはずです。
helloworldフォルダに入り、ビルドのコマンドを実行します。
cd helloworld
make install pdincludepath=../pure-data/src/ objectsdir=./build
これをしていないと、ビルドがエラーになることがあります。make installのまえに、毎回makeしたらよい?
テキストエディタなどで、helloworldフォルダのなかにあるC言語のファイル「helloworld.c」を開きます。
post("Hello world!");
の”Hello world!"を、少し変えてみます。
post("Hello Hello!");
ターミナルで、helloworldフォルダにいることを確認し、ビルドを実行します。
make install pdincludepath=../pure-data/src/ objectsdir=./build
buildフォルダが上書きされ、新しくビルドされたファイルが生成されます。
build > helloworld > helloworld-help.pd
をPdで開きます。
なお、Pdはキャッシュが残るようで、さきほど「helloworld」オブジェクトを開いたままのPdでは、あたらしいビルドが反映されませんでした。
面倒ですがPdを一度終了し、起動しなおしてください。
C言語で書いたメッセージに、変わっています。
これでひとまずオリジナルオブジェクトができました。
最初から入っていた「helloworld-help.pd」は、ビルドするための雛形です。
このPdファイルをあらかじめPdで編集してからビルドすると、反映されます。
ためしに、Pdファイルで編集してみました。
ビルド後の「helloworld-help.pd」にも反映されました!
Pdで編集するもの、C言語で書くもの、を意識しておくとよいですね。