見出し画像

Command Line Param in openframeworks

はじめに

openframeworksにて、コマンドライン引数(argc, argv)を渡すための方法です。

環境

* MacBook Pro(Retina, 15-inch Mid 2015)
* openframeworks v0.9.0
* XCode v7.2

Steps

■Step1. Source Code

openframeworks(oF)では、Project Generatorを使って新規Projectを生成します。通常、ofApp.cpp, ofApp.hにsource codeを追加していきますが、実は、main.cppもちゃんと存在していて、ここにmain()関数があります。そこで、「このmain関数にargc, argvを追加し、ここで受けた引数をofAppのコンストラクタに渡す」ことでコマンドライン引数を使用することができます。ofApp側は、引数付きのコンストラクタを自分で追加する必要があります。

sampe souceを以下にupしておきました。
https://github.com/SJ-Magic-techGym/CommandLineParam_in_oF

■Step2. 実行

projectをbuildすると、binの下に作成したアプリ(test.appとします)ができます。Finderからこれを開くと作成したアプリが立ち上がりますが、今回はコマンドライン引数を渡したいので、まず、terminalアプリを立ち上げてください。"cd"コマンドを使って、以下のように、bin dirの所まで移動します。

$cd /Users/yourname/Documents/openframeworks/of_v0.9.0_osx_release/apps/myApps/test/bin

ここで、

$open -a test.app

とすると、test.appを立ち上げることができますが、

$open -a test.app 100

などとしても、上手くいきません。
実は、この"test.app"は、directoryで、実行ファイルの実態は、下の方に隠れています。
そこで、さらにそこまで移動します。

$cd test.app/Contents/MacOS/

ここで、"ls"を打つと、

libfmodex.dylib test

が存在することがわかります。この、"test"が実行ファイルの実態です。

よって、ここから

$./test 100

などと打てば、test.appにコマンドライン引数を渡すことができます。

"./"は必要です。

terminalからcommandを打った時、OSはPATHに指定したdirから該当commandを探しますが、現dirの中は探しません。ですので、

$test 100

などと打っても、"そんなコマンド知らないよ"と言われてしまうのです。

buildしたアプリについて、毎回、PATH通すのは面倒なのですが、Full Pathで実行すれば問題なく立ち上げることができます。

$/Users/yourname/Documents/openframeworks/of_v0.9.0_osx_release/apps/myApps/test/bin/test.app/Contents/MacOS/test 100
と言った感じです。

しかし、毎回Full Path打つのもやはり、面倒なので、現dirを表すshortcut = "./"を使い、

$./test 100

とすれば良い、と言うことになります。

参考文献/ URL

How to Execute a File in a MacBook Terminal

もしよろしければ、サポートをお願いします! 頂いたサポートは、Creatorとしての活動費に充てさせて頂きます。