c-使用GPLC编译GTK



尝试使用GPLC编译一个C GTK gui+Prolog文件。我读到我可以通过使用-C 'gcc flags here' 从GPLC向gcc编译器传递多个标志

好的,这样我就可以用单独组合我的GUI了

gcc foo.c `pkg-config --cflags --libs gtk+-2.0` -o $(NAME)

然而,这在GPLC中不起作用,因为我会有

'`pkg-config --cflags --libs gtk+-2.0`'

这意味着我不会从pkg-config得到响应,因为它在一个"字符串"中我该怎么解决

最后,如果我做了一些丑陋的事情,比如:

gplc -c foo1.c -C '-I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include   -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo   -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng12 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng12 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/freetype2 -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lfontconfig -lfreetype'
gplc -c foo2.pl
gplc foo1.o foo2.o -o gyges

由于对GTK函数的所有引用都未定义,我在链接过程中遇到编译失败为什么

Makefile:中使用shell

GTK_FLAGS = $(shell pkg-config --cflags --libs gtk+-2.0)
gplc -c foo1.c -C $(GTK_FLAGS)

编辑

CC = gplc
GTK_CFLAGS = $(shell pkg-config --cflags gtk+-2.0)
GTK_LIBS = $(shell pkg-config --libs gtk+-2.0)
OBJECTS = foo1.o foo2.o
all: gyges
foo1.o: foo1.c
    $(CC) -c foo1.c -o foo1.o $(GTK_CFLAGS)
foo2.o: foo2.pl
    $(CC) -c foo2.pl -o foo2.o
gyges: $(OBJECTS)
    $(CC) $(OBJECTS) -o gyges $(GTK_LIBS)

回答

正如Alter Mann所指出的,为了解决第一个问题,我只需要在Makefile中使用shell。

出现第二个问题是因为GPLC在链接过程中没有看到gtk-lib。这是因为我在编译和链接期间使用-C标志将args传递给gcc编译器,这是不正确的,根据gplc man,-L标志是链接期间必须用于将args传给gcc的标志。

所以我最后的作品MAKE看起来是这样的:

CC = gplc
GTK_CFLAGS = $(shell pkg-config --cflags gtk+-2.0)
GTK_LIBS = $(shell pkg-config --libs gtk+-2.0)
OBJECTS = foo1.o foo2.o
all: name
foo1.o:
     $(CC) -c foo1.c -o foo1.o -C '$(GTK_CFLAGS)'
foo2.o:
    $(CC) -c foo2.pl -o foo2.o
name: $(OBJECTS)
    $(CC) $(OBJECTS) -o name -L '$(GTK_LIBS)'
    rm *.o

相关内容

  • 没有找到相关文章

最新更新