我目前正在尝试用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
答案 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