我在Python中有一个需要GTK的扩展模块。编译GTK程序通常需要大量的链接,因为GTK依赖于许多其他库(Glib、Cairo、Pango等)。因此,通常我只是使用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`但是由于某些原因,当我在传递给distutils中的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那么,有没有办法让这件事变得可行呢?我是否需要通过获取Python字符串形式的pkg-config输出,然后将其添加为module.extra_compile_args中的元素来手动进行外壳扩展
发布于 2012-08-09 03:55:22
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
https://stackoverflow.com/questions/11871713
复制相似问题