首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >makefile和gtkmm的问题

makefile和gtkmm的问题
EN

Stack Overflow用户
提问于 2011-06-22 23:35:18
回答 2查看 4.1K关注 0票数 3

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

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

代码语言:javascript
复制
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>,它将返回错误:

代码语言:javascript
复制
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文件中,则键入:

代码语言:javascript
复制
g++ test.cc -o output `pkg-config --cflags --libs gtkmm-2.4`

在控制台中,它工作得很好。这只是一个临时的修复,因为我已经到了需要拥有多个类的地步。我不知道这是不是make或gtkmm的安装有问题,我已经尝试重新安装了这两个,但都没有用。我不知道还能试什么。

最后,如果有用的话,我正在运行Ubuntu10.10,带有g++版本4.4.5

感谢您的帮助

makefile如下所示:

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

发布于 2014-11-18 21:34:55

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

代码语言:javascript
复制
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使用的引号类型很重要,如果您使用‘而不是’它不起作用。

附言:我是sure文件的新手,所以我不太确定我做了什么。

票数 2
EN

Stack Overflow用户

发布于 2011-06-25 01:35:22

此错误:

代码语言:javascript
复制
/usr/include/gtkmm-2.4/gtkmm.h:87: fatal error: glibmm.h: No such file or directory`

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

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6442550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档