質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
make

make は、ビルド作業を自動化するツールです。さまざまなファイルの最終変更時刻を比較し、従属するファイルよりも「ターゲット」のファイルが古いことがわかったときユーザーが設定していた命令を実行する事が可能です。

コンパイル

コンパイルとは、プログラミング言語のテキストソース(ソースコード)をコンピュータ上で実行可能な形式(オブジェクトコード)に変換することをいいます

Q&A

解決済

1回答

1678閲覧

MSYS2でOpenframeworksをコンパイルするとエラーが発生する

makiya

総合スコア2

make

make は、ビルド作業を自動化するツールです。さまざまなファイルの最終変更時刻を比較し、従属するファイルよりも「ターゲット」のファイルが古いことがわかったときユーザーが設定していた命令を実行する事が可能です。

コンパイル

コンパイルとは、プログラミング言語のテキストソース(ソースコード)をコンピュータ上で実行可能な形式(オブジェクトコード)に変換することをいいます

0グッド

0クリップ

投稿2020/05/05 19:08

前提・実現したいこと

MSYS2でOpenframeworksをmakeコマンドでコンパイルすると以下のようなエラー
メッセージがログに表示されコンパイルできません。

発生している問題・エラーメッセージ

/bin/sh: /mingw32/bin/pkg-config: No such file or directory
/bin/sh: 0 行: return: `return' は関数または source されたスクリプト内のみで利用できます。makefileCommon/config.shared.mk:305: *** couldn't find cairo zlib openssl glew glfw3 libcurl 0 pkg-config package or it's dependencies, did you run the latest install_dependencies.sh?. 中止.

該当のソースコード

ソースコード

試したこと

MSYS2のインストールからDB更新までの一連の手順は以下のHPの通りに実行した。
https://openframeworks.cc/ja/setup/msys2/
手順を見直したところ、
「pacman --noconfirm --needed -Sy bash pacman pacman-mirrors msys2-runtime」
の部分で「msys2」と入力すべきところ、「mysys2」と間違って入力していたので、再度このコマンドからやり直したが、makeコマンドの結果は変わらなかった。

補足情報(FW/ツールのバージョンなど)

MSYS2のバージョンは「of_v0.11.0_msys264_release/of_v0.11.0_msys264_release」
です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

日本語のドキュメントは少し古いようで、しかも、間違った箇所があります。下記の英語版を参考にしてください。

msys2 | openFrameworks

主な違いを書きます。

  1. 2018年以前のバージョンのMSYS2をインストールしてそのままアップデートし続けてきた場合、問題があるようです。その場合は最新版のMSYS2をインストールし直してください。(今回、初めてインストールした場合は問題ありません)
  2. MSYS2、MINGW32、MINGW64の各環境を起動する方法はbatファイルではなくexeファイルです。(最新のMSYS2はそのようになっています)
  3. MSYS2自体のアップデートのコマンドはpacman -Syu --noconfirm --neededです。
  4. 0.11.0ではMINGW32(32bit版)とMINGW64(64bit版)の両方をサポートしています。しかし、ダウンロードするコンテンツが異なります。32bitで動作させたい場合は、msys2 32bit版のOFをダウンロードしてmingw32.exeを実行します。64bitで動作させた場合は、msys2 64bit版のOFをダウンロードししてmingw64.exeを実行します。
  5. ダウンロードしたファイルを展開しておきますが、展開されたファイルまでのパスにスペースが含まれてはいけません。(明記されていませんが、パスに日本語が含まれる場合も問題が起きる可能性があります。)
  6. 依存関係のダウンロードするためのコマンドは
./install_dependencies.sh`

ではなく

./install_dependencies.sh

です。日本語版では余計な"`"があるため、そのままコピペした場合はコマンドに失敗します。また、実行はMSYS2ではなくMINGW32(64bit版の場合はMINGW64)で行います。(

以上、Installing openFrameworksまでの違いです。その後の項目にも色々と違いがありますので、ご注意ください。


なお、試しにMINGW64でやってみた所、下記で報告されている全く別のエラーで失敗しました。同じエラーが出た場合は、参考にしてください。

Compilation failing due to confliting definition in openal - bugs, errors - openFrameworks

私の場合は該当箇所を

C

1typedef struct ALCdevice ALCdevice; 2typedef struct ALCcontext ALCcontext;

と書き換えたら、一応コンパイルはできました。(動作テストまではしていません)

投稿2020/05/05 20:09

編集2020/05/05 20:11
raccy

総合スコア21739

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

makiya

2020/05/06 03:58

raccyさん。回答ありがとうございます。 ./installをMinGW64で実行し、MinGW64でmakeしたらうまく コンパイルできました。
yuki23

2020/05/08 00:30

makiya さん 解決したのであれば、解決済みにしてベストアンサーを選びましょう
makiya

2020/05/08 09:40

yuki23さん。アドバイスありがとうございます。解決済みにしてベストアンサーを選びました。
ubic-ume

2020/10/22 01:07

raccyさんのご回答に沿ってmingw64でのmakeは成功しました。audioOutputExampleをmakeしてみたところ、ほぼプログラムで意図した通り動作(音の出力も含めて)ができているようです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問