1

Sublime Text 2とSublimeClangを使用して、単純なAllegroプログラムをコンパイルして実行しようとしています。g++ '/path/to/project/main.cpp' -o '/path/to/project/main' -I/usr/include/allegro5 -L/usr/lib -lallegroコマンドラインで実行すると、正常にコンパイルされます。

C++。sublime-buildの内容

{
    "cmd": ["g++", "${file}", "-o", "${file_path}/${file_base_name}"],
    "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
    "working_dir": "${file_path}",
    "selector": "source.c, source.c++",

    "variants":
    [
        {
            "name": "Run",
            "cmd": ["bash", "-c", "g++ '${file}' -o '${file_path}/${file_base_name}' $(pkg-config --libs allegro-5.0)"]
        }
    ]
}

実行は失敗し、SublimeConsoleの出力は次のとおりです。

Running bash -c g++ '/path/to/project/main.cpp' -o '/path/to/project/main' && '/path/to/project/main' -I/usr/include/allegro5 -L/usr/lib -lallegro

&& '/path/to/project/main'ビルド設定で追加するように指定されていなくても、Sublimeが追加しているようです。Sublimeがこれを追加する原因は何&& '/path/to/project/main'ですか?そして、どうすればそれを削除できますか?

全体像では、これは、ライブラリが使用されていない場合でも、AllegroがすべてのC++プロジェクトでリンクされることを意味します。Allegroフラグをシステムにグローバルに追加する方法はありますか?申し訳ありませんが、通常はC++開発者ではありません。

4

1 に答える 1

0

私は自分の問題を解決しました。$()表記の代わりにバッククォートを使用しました。

"cmd": ["bash", "-c", "g++ '${file}' -o '${file_path}/${file_base_name}' `pkg-config --libs allegro-5.0` && ./${file_base_name}"]

私も追加したことに注意してください&& ./${file_base_name}-これもプログラムを実行します。

于 2012-11-03T19:19:41.003 に答える