GTK を必要とする Python の拡張モジュールがあります。GTK は他の多くのライブラリ (Glib、Cairo、Pango など) に依存しているため、GTK プログラムのコンパイルには通常、大量のリンケージが必要です。したがって、通常、次のpkg-config
ように、シェル展開 (バックティック) を使用しての出力を使用してコンパイルします。
gcc -p-O2 -Wall myprogram.c -o myprogram `pkg-config --cflags gtk+-3.0` `pkg-config --cflag `pkg-config --libs gtk+-3.0`
しかし、何らかの理由で、module.extra_compile_args
distutils に渡された引数でシェル展開を使用すると、BASH が実際には式を展開しないため、エラーが発生します。
module = Extension('mymodule',
sources = ['mymodule.c'])
module.extra_compile_args = ['`pkg-config --cflags gtk+-3.0`',
'`pkg-config --libs gtk+-3.0`'];
これにより、次のようなエラーが発生します。
gcc: error: `pkg-config --cflags gtk+-3.0`: No such file or directory
それで、これを機能させる方法はありますか?pkg-config
の出力をPython 文字列として取得し、それを の要素として追加して、手動でシェル展開を行う必要がありmodule.extra_compile_args
ますか?