C++にLuaを導入しようと悪戦苦闘する


C++にLuaを組み込もうとして悪戦苦闘しました……。

やった手順だけ書き残します。

環境

  • macOS Catalina ver10.15.1
  • Apple clang version 11.0.0
  • Lua 5.3.5

手順

1.Luaのソースファイルをダウンロード

何ダウンロードすればいいのか分からなかったのでソースファイルを持ってきました。
Lua公式ページからlua-5.3.5.tarをダウンロードして解凍。

2.libファイルを作る

ここで、つまづいた……。

libファイルを作らなきゃいけないので、解凍したディレクトリに移動してmakeします。
makefileがくっついてるのでできるはず。

$ make macosx

makeしたらliblua.aが作成されていることを確認。こいつを使用します。

以下、wikipedia先生の解説

ライブラリのファイル名は常に接頭辞libで始まり、拡張子として.a(静的ライブラリ)あるいは.so(ダイナミックリンクライブラリ)が使用される。

3.ビルドできるか試す

私はプロジェクトでmakeを使っているのでそこに組み込みます。
さっきのliblua.aの場所を指定します。

g++ -o (オブジェクトファイル) -L./include/lua -llua

なんだこれ。。。最初は思いましたがこれには意味があります。

  • -Ldir
    • -Lの後にスペースを開けずにディレクトリを指定します
  • -llib
    • -lの後にスペースを開けずにライブラリファイル名を指定します
    • 指定の仕方が特殊で、頭のlibと拡張子.aを除いた名前をここに入れます

4. 完了

こんなりすんなりいけばいいんですが、1日位かかりました……。

おまけ

途中でNo rule to make targetとかエラーが出る人は、パス間違い、ファイル間違い、スペルミス、makefileの書き方ミスとかが多いそうです。