2

我在 Python 中有一个需要 GTK 的扩展模块。编译 GTK 程序通常需要大量链接,因为 GTK 依赖于许多其他库(Glib、Cairo、Pango 等)。因此,通常我只是pkg-config使用 shell 扩展(反引号)的输出进行编译,例如:

gcc -p-O2 -Wall myprogram.c -o myprogram `pkg-config --cflags gtk+-3.0` `pkg-config --cflag `pkg-config --libs gtk+-3.0`

但是由于某种原因,当我在传递给 distutils 的参数中使用 shell 扩展时module.extra_compile_args,我收到一个错误,因为 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-configPython 字符串的输出然后将其作为元素添加来手动进行 shell 扩展module.extra_compile_args

4

1 回答 1

2
module.extra_compile_args = [
  subprocess.check_output(["pkg-config", "--cflags", "gtk+-3.0"]),
  subprocess.check_output(["pkg-config", "--libs", "gtk+-3.0"])
];

http://docs.python.org/library/subprocess.html#subprocess.check_output

于 2012-08-08T19:55:21.747 回答