LoginSignup
14
5

More than 1 year has passed since last update.

[openFrameworks] addon_config.mkについて

Last updated at Posted at 2018-05-20

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

ビルドの仕方も環境によって色々難しいのでまとめたいところ...

14
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
5