Help us understand the problem. What is going on with this article?

OpenSiv3D with Makefile on macOS

とにかく Makefile で OpenSiv3D に入門するための記事です。 No xcode 1 で行きます。

  • 無残な Makefile なので期待しないでください。
  • 脚注の通り xcodebuild を使う方が無難な気がします。

1. 背景

Xcodeを開かずにOpenSiv3Dを使いたい は良い記事ですね。タイトルを見て、僕もこの記事を参考にしようと考えました。

しかし、この記事は……僕には難し過ぎたようです。

なぜなら、 Xcode を開きます 2

2. 環境構築

本記事では Makefile で OpenSiv3D を使用します。例として、 SivRl ディレクトリで開発することにします。

ディレクトリ構成

以下のような配置にしました。 OpenSiv3D は、 macOS においては application bundle と呼ばれるディレクトリ構成を前提としています 3 :

SivRl/        # project directory
├── bin/      # output directory
│  └── App/   # application bundle
│     └── Contents/
│        ├── Info.plist   # copied
│        ├── macOS/
│        │   └── SivRl    # output binary
│        └── Resources/
│           └── engine/   # copied
├── Makefile
├── Siv3d/
└── src/
    └── main.cpp
  • Appbin の下に入れたのは、 App と同階層にログファイルが生成されるためです。
  • Info.plist はテンプレート (↓) からコピーしました。ひとまず。
  • Siv3DmacOS のセットアップガイド のテンプレートからコピーします。もしくは、 Xcode を使ってビルドした OpenSiv3D/Siv3D をコピーします。否ッッ No Xcode ッッッッッッ

Makefile

僕は Makefile に詳しくないため、 無残 なファイルだと思いますが許してください。

貼るだけでもいいでしょうか:

CC         = g++ -std=c++2a\
             -framework AudioToolbox\
             -framework OpenAL

MAIN_OBJ   = ./bin/App/Contents/MacOS/SivRl

SRCS       = $(wildcard src/*.cpp)
HEADERS    = $(wildcard src/*.hpp)

# FIXME: what's this..
OBJS       = $(SRCS:src/.cpp=obj/.o)

SIV3D      = ./Siv3d

# TODO: maybe use recursion?
SIV3D_DEPS = -I$(SIV3D)/include\
             -I$(SIV3D)/include/Siv3D\
             -I$(SIV3D)/include/ThirdParty\
             -I$(SIV3D)/include/HamFramework\
             -L$(SIV3D)/lib/macOS\
             -L$(SIV3D)/lib/macOS/boost\
             -L$(SIV3D)/lib/macOS/freetype\
             -L$(SIV3D)/lib/macOS/glew\
             -L$(SIV3D)/lib/macOS/harfbuzz\
             -L$(SIV3D)/lib/macOS/libgif\
             -L$(SIV3D)/lib/macOS/libjpeg-turbo\
             -L$(SIV3D)/lib/macOS/libogg\
             -L$(SIV3D)/lib/macOS/libpng\
             -L$(SIV3D)/lib/macOS/libvorbis\
             -L$(SIV3D)/lib/macOS/libwebp\
             -L$(SIV3D)/lib/macOS/opencv\
             -L$(SIV3D)/lib/macOS/zlib\
             -lboost_filesystem\
             -lfreetype\
             -lGLEW\
             -lharfbuzz\
             -lSiv3D\
             -lgif\
             -lutil\
             -lturbojpeg\
             -logg\
             -lpng\
             -lvorbis\
             -lvorbisenc\
             -lvorbisfile\
             -lwebp\
             -lopencv_core\
             -lopencv_imgcodecs\
             -lopencv_imgproc\
             -lopencv_objdetect\
             -lopencv_photo\
             -lopencv_videoio\
             -lz

$(MAIN_OBJ): $(OBJS)
        $(CC) -o $(MAIN_OBJ) $(OBJS) $(SIV3D_DEPS)

$(OBJS): $(HEADERS)

test: ${MAIN_OBJ}
        # ./test # run test script

run: ${MAIN_OBJ}
        $(MAIN_OBJ)

clean:
        rm $(MAIN_OBJ)

.PHONY: test clean

自分のリソースファイルを追加する

いつか試します。

3. まとめ

Xcode を使いましょう

じゃなくて、 Makefile でも入門できました。何か 1 つ OpenSiv3D で作ってみようと思います。


  1. no code ならぬ…… 

  2. 初回の設定以後は xcodebuild というコマンドで済ませているようなので、こちらの 記事 を参照した方が良いかもしれません。その初回の設定 (Header Search Path の編集) も、 Xcode を開かずに可能です。 

  3. bundle されていない (mainBundle == nil) ならば、 Windows/Linux とパスの扱いを同様にするのもアリかもしれません。僕も PR を作ろうかと思いましたが、途中で力尽きて app bundle でいっかとなりました。 

toyboot4e
設定と UI の話を投稿しようと思います
https://github.com/toyboot4e
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away