addon_config.mk についての説明が殆ど見当たらないのでソースコード追いながらまとめてみた.
ofxHogehoge/src
しか存在しないようなaddonだと殆ど要らないけどヘッダーサーチパスとか毎回追加しなきゃいけないようなaddonにはaddon_configを書いてあげると優しいですね.
注意
- もっぱらosx/Xcodeで調べてます.
- コードベースで追っかけただけなので間違いも混ざってる可能性は大いにあります. 間違いの指摘やwin/linux環境での挙動等の情報お待ちしております.
- タグは準備されてるけどコード見たら使われてないっぽいのも多々あってなかなか...
metaタグ
- ADDON_NAME
- 名前
- ADDON_DESCRIPTION
- 説明
- ADDON_AUTHOR
- 作者
- ADDON_TAGS
- タグ(ofxaddons.com等で使われていると思われる)
- ADDON_URL
- 配布URL (もっぱらgithubのアドレス)
ex
meta:
ADDON_NAME = ofxHogehoge
ADDON_DESCRIPTION = let's hogehoge
ADDON_AUTHOR = 2bit
ADDON_TAGS = "foo" "bar" "baz baz"
ADDON_URL = https://github.com/2bbb/ofxHogehoge
環境依存条件分岐タグ
-
common
- 共通処理. 大抵はここの中に書く.
-
linux
-
linux64
-
msys2
- MinGW
-
VS
- win + visual studio
-
linuxarmv6
-
linuxarmv7
-
android/armeabi
- Android ARM v5
-
android/armeabi-v7a
- Android ARM v7
-
android/x86
-
emscripten
-
ios
-
osx
具体的な設定項目
ADDON_DEPENDENCIES
- 他のaddonへの依存関係
- これを追記しておくとPGで勝手に追加されると良いなーと思うんだけどコード的には使われてないっぽい
- パースされたデータは
std::vector<std::string> ofAddon::dependeincies
に突っ込まれる
ex
ADDON_DEPENDENCIES = ofxOsc
ADDON_DEPENDENCIES += ofxPubSubOsc
# or
ADDON_DEPENDENCUES = ofxOsc ofxPubSubOsc
ADDON_INCLUDES / ADDON_INCLUDES_EXCLUDE
- インクルードパスが必要な場合に指定する
- XcodeだとBuild Settings > Header Search Pathsに追加される
- 除外したい場合は ADDON_INCLUDES_EXCLUDE に追加する
- EXCLUDE中の
%
はワイルドカードとして機能する
ex
common:
ADDON_INCLUDES = libs/hoge/includes
ADDON_INCLUDES += libs/fuga/includes
osx:
ADDON_INCLUDES_EXCLUDE = libs/fuga/includes/win32
ADDON_INCLUDES_EXCLUDE += libs/fuga/includes/win64
vs:
ADDON_INCLUDES_EXCLUDE = libs/fuga/includes/osx
ADDON_CFLAGS
- cファイルのコンパイル時に付けるフラグ
- XcodeだとBuild Settings > Other C Flagsに追加される
ADDON_CPPFLAGS
- cppファイルのコンパイル時に付けるフラグ
- XcodeだとBuild Settings > Other C++ Flagsに追加される
ADDON_LDFLAGS
- ldに付けるフラグ
-
ADDON_LDFLAGS = -Xlinker -rpath -Xlinker @executable_path
ってやるとmacとかで幸せになれるかも- XcodeだとBuild Settings > Other Linker Flagsに追加される
ADDON_LIBS / ADDON_LIBS_EXCLUDE
- 外部ライブラリを追加するために使う
-
libhoge.a
とかlibhoge.dylib
とかを記述する- XcodeだとBuild Settings > Other Linker Flagsに追加される
- 除外したいファイルはEXCLUDEに
- EXCLUDE中の
%
はワイルドカードとして機能する
ADDON_PKG_CONFIG_LIBRARIES
- Linux用
- Linuxは詳しくないので誰か分かる人教えてください
ADDON_FRAMEWORKS
- OSX, iOS用
- .frameworkを追加する.
ADDON_SOURCES / ADDON_SOURCES_EXCLUDE
- プロジェクトのソースファイルとして追加される
- 追加したくない場合はADDON_SOURCES_EXCLUDEに指定する
- EXCLUDE中の
%
はワイルドカードとして機能する
ADDON_HEADER_SOURCES / ADDON_OBJC_SOURCES / ADDON_CPP_SOURCES
- ADDON_SOURCES も拡張子でタイプは調べてくれてるので多分そんなに使わない
ADDON_DATA
- プロジェクトのbin/dataにコピーする
ためのタグだと思うけど何も使われてないっぽい- パースされたデータは
std::vector<std::string> ofAddon::data
に突っ込まれる - [追記 2022/03/09] 実装されてます(いつからかまで追ってませんが...)
- ただし, コメントには wildcard として * とか ? が使える的なことが書かれてるけど多分使えない?
- addonディレクトリからの相対パスで
ADDON_DATA = ./MyAddonData
とかって書いておくとbin/data
にコピーされます - ディレクトリを指定するとディレクトリごとコピーされます
ADDON_DLLS_TO_COPY
- windows用
- dllをbinに追加
ADDON_DEFINES
- defineマクロを定義する
-
DEF_HOGE=BAR
みたいな=
を使った形は使えないっぽい- PR投げてマージされました. 0.10.1からは使えるはず. 多分.
-
Xcodeではそもそも動かない?masterブランチだとちゃんと動いた - XcodeだとBuild Settings > Preprocessor Macrosに追加される
-
ADDON_AFTER (加筆 2019/01/22)
projectGenerator/issues/171 によると ADDON_AFTER
というのが追加されるっぽい?
arturo的には既に実装されてると思ってたっぽいけどソースコードには ADDON_AFTER
という文字列は見当たらない.
けど, 実装されたら便利そうなので祈りましょう.
追記
ということでマクロやフラグに =
が使えない問題の修正のPR(とXcodeのファイル順がぐちゃぐちゃになる問題の修正のPR)を反映したfrontendのバイナリを作ってアップしています.
macos: https://drive.google.com/open?id=1qal2sZ81Up1g-GyfgCYzgDgHerBUyPsD
win32: https://drive.google.com/open?id=1kYOG9rTXhpGq26wKjK7xlOS2TyDXjGT3
これでaddonでC++14を使ったりも出来るようになりますね.
例: https://github.com/2bbb/ofxCpp14
ビルドの仕方も環境によって色々難しいのでまとめたいところ...