makefile和gtkmm出现问题

Problem with makefile and gtkmm

本文关键字:问题 gtkmm makefile      更新时间:2023-10-16

我目前正试图用gtkmm编写一个简单的程序,但在编译它时遇到了问题。我有几个简单的文件:main.cc,它只包含主函数,test.cc和test.h,它们定义了一个基于类的Gtk::Window,其中有一对按钮,最后是一个简单makefile。

当我试图编译makefile时,问题出现了,它返回:

In file included from main.cc:2:
test.h:12: fatal error: gtkmm.h: No such file or directory

如果我用#include <gtkmm-2.4/gtkmm.h>替换#include <gtkmm.h>,则返回错误:

In file included from test.h:12,
                 from main.cc:2:
/usr/include/gtkmm-2.4/gtkmm.h:87: fatal error: glibmm.h: No such file or directory

我已经搜索了一段时间的解决方案,并在网上四处寻找,但对于其他有类似问题的用户来说,这是因为他们的makefile中没有包含"pkg config--cflags--libs gtkmm-2.4"。不幸的是,这不是我问题的根源,因为我一直都有这个问题。

最奇怪的是,当我不使用makefile时,它可以工作。如果我从main.cc中获取主函数并将其放入test.cc文件中,则键入:

g++ test.cc -o output `pkg-config --cflags --libs gtkmm-2.4`

进入控制台,它工作得很好。这只是一个临时的解决方案,因为我已经到了需要多个类的地步。我不知道这是否是安装make或gtkmm的问题,我已经尝试重新安装两者,但都没有成功。我不知道还能尝试什么。

最后,如果它有帮助的话,我正在运行Ubuntu 10.10,带有g++版本4.4.5

感谢您的帮助

生成文件如下:

main: main.o
    @echo "Main"
    @g++ -g main.cc test.o -o output `pkg-config --cflags --libs gtkmm-2.4` 
test.o:
    @echo "Test"
    @g++ test.cc -o test.o `pkg-config --cflags --libs gtkmm-2.4`
clean:
    @clear
    @rm -f *.o

我遇到了同样的问题,我通过在构建的两个步骤(编译和链接)中添加pkg-config gtkmm-3.0 --cflags --libs解决了这个问题。我的生成文件:

CC=g++
CFLAGS=-c -Wall 
LDFLAGS=
SOURCES=WatsonGui.cpp
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=watsonGui
all: $(SOURCES) $(EXECUTABLE) 
$(EXECUTABLE): $(OBJECTS) 
    $(CC) $(LDFLAGS) $(OBJECTS) -o $@ `pkg-config gtkmm-3.0 --libs`
.cpp.o:
    $(CC) $(CFLAGS) $< -o $@ `pkg-config gtkmm-3.0 --cflags`
clean:
    rm -rf *.o watsonGui 

请注意,用于pkg配置的引号类型很重要,如果您使用'而不是´,则不起作用。

第页。S.:我是makefiles的新手,所以我不太确定自己做了什么。

此错误:

/usr/include/gtkmm-2.4/gtkmm.h:87: fatal error: glibmm.h: No such file or directory`

建议您必须将glimm-2.4添加到pkg配置搜索:

main: main.o
    @echo "Main"
    @g++ -g main.cc test.o -o output `pkg-config --cflags --libs gtkmm-2.4 glibmm-2.4` 
test.o:
    @echo "Test"
    @g++ test.cc -o test.o `pkg-config --cflags --libs gtkmm-2.4 glibmm-2.4`
clean:
    @clear
    @rm -f *.o