使用Makefile

时间:2019-01-22 13:31:10

标签: c++ makefile g++ gtk

我在用C ++程序编译gtk库时遇到麻烦。我已经安装了gtk,并且在使用如下终端命令时程序正在运行:

gcc -Wall -g helloworld.c -o helloworld `gtk-config --cflags` \
    `gtk-config --libs` 

但是我需要它与其他一些库一起编译,所以我有一个Makefile,但不知道如何使其也可以编译gtk库。

CFLAGS = -g -Wall -fPIC -Wextra -Werror -lpthread -pthread # for Linux and other gcc systems
OP=$(CFLAGS)  
CC=g++  #for Linux

# compilation rule for general cases
.o :
    $(CC) $(OP) -o $@ $? -lm
.c.o:
    $(CC) -c $(OP) $<     

SWEOBJ = swedate.o swehouse.o swejpl.o swemmoon.o swemplan.o swepcalc.o sweph.o\
    swepdate.o swephlib.o swecl.o swehel.o

astrogtk: astrogtk.o libswe.a
    $(CC) $(OP) -I/home/arjan/astroproject -o astrogtk astrogtk.o -L. -lswe -lm -ldl 

swemini: swemini.o libswe.a
    $(CC) $(OP) -o swemini swemini.o -L. -lswe -lm

# create an archive and a dynamic link libary fro SwissEph
# a user of this library will inlcude swephexp.h  and link with -lswe

libswe.a: $(SWEOBJ)
    ar r libswe.a   $(SWEOBJ)

libswe.so: $(SWEOBJ)
    $(CC) -shared -o libswe.so $(SWEOBJ)

clean:
    rm -f *.o astrogtk libswe*

###
swecl.o: swejpl.h sweodef.h swephexp.h swedll.h sweph.h swephlib.h
sweclips.o: sweodef.h swephexp.h swedll.h
swedate.o: swephexp.h sweodef.h swedll.h
swehel.o: swephexp.h sweodef.h swedll.h
swehouse.o: swephexp.h sweodef.h swedll.h swephlib.h swehouse.h
swejpl.o: swephexp.h sweodef.h swedll.h sweph.h swejpl.h
swemini.o: swephexp.h sweodef.h swedll.h
swemmoon.o: swephexp.h sweodef.h swedll.h sweph.h swephlib.h
swemplan.o: swephexp.h sweodef.h swedll.h sweph.h swephlib.h swemptab.h
swepcalc.o: swepcalc.h swephexp.h sweodef.h swedll.h
sweph.o: swejpl.h sweodef.h swephexp.h swedll.h sweph.h swephlib.h
swephlib.o: swephexp.h sweodef.h swedll.h sweph.h swephlib.h
astrogtk.o: swephexp.h sweodef.h swedll.h astromath.h

我尝试将gtk行添加到Makefile内的不同位置

gtk-config --cflags gtk-config --libs

但是我曾经尝试将其放置在什么地方,它只是说它找不到gtk头文件...

astrogtk.cpp:1:21: fatal error: gtk/gtk.h: No such file or directory
compilation terminated.
<builtin>: recipe for target 'astrogtk.o' failed
make: *** [astrogtk.o] Error 1

那么使用此makefile编译gtk库的解决方案是什么?

1 个答案:

答案 0 :(得分:0)

只需将gtk-config --cflags添加到您的CFLAGS中即可。然后将gtk-config --libs添加到您的库中,紧挨着-lswe -lm -ldl