makefile和gtkmm的问题

时间:2011-06-22 15:35:18

标签: c++ makefile gtkmm

我目前正在尝试用gtkmm编写一个简单的程序,但是当我尝试编译它时,我遇到了问题。我有一些简单的文件:main.cc只包含main函数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.h>替换为#include <gtkmm-2.4/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

我一直在寻找一个解决方案,并在网上浏览了它,但对于有类似问题的其他用户,它是由于不包括`pkg-config --cflags --libs gtkmm-2.4`造成的。在他们的makefile中。不幸的是,这不是我问题的根源,因为我一直都在我的问题中。

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

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

进入控制台,它工作正常。这只是一个临时修复,因为我要到了需要多个课程的地步。我不知道这是安装make还是gtkmm的问题,并尝试重新安装两者,但无济于事。我不知道还有什么可以尝试。

最后,如果它有助于我运行Ubuntu 10.10,使用g ++版本4.4.5

感谢您的帮助

makefile如下:

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

2 个答案:

答案 0 :(得分:2)

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

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-config的引号类型很重要,如果您使用'而不是'它不起作用。

P.S。:我是makefile上的新手,所以我不能完全确定我做了什么。

答案 1 :(得分:1)

此错误:

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

建议您必须将 glibmm-2.4 添加到 pkg-config 搜索:

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