![見出し画像](https://assets.st-note.com/production/uploads/images/40075460/rectangle_large_type_2_2a393edd0063d703f9d84d19523d268a.jpg?width=1200)
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
いいなと思ったら応援しよう!
![Nobu](https://assets.st-note.com/production/uploads/images/39583166/profile_9748194b1d0bcc132ad568d54f4b7634.png?width=600&crop=1:1,smart)