首页 > 解决方案 > 致命错误:gtkmm.h:没有这样的文件或目录

问题描述

我无法弄清楚这段代码有什么问题

无论我做什么编辑,每次都会给出同样的错误

all : asio - 1.12.2 src / chat_server client

asio - 1.12.2 :
     tar xzf asio - 1.12.2.tar.gz

client : src / client.cpp src / mainwin.cpp src/*.h
    $(CXX) $(CXXFLAGS) src/client.cpp src/mainwin.cpp $(GTKFLAGS) -o src/client

GTKLINKFLAGS=$(shell pkg-config --libs gtkmm-3.0)
GTKCOMPILEFLAGS=$(shell pkg-config --cflags gtkmm-3.0)


CXXFLAGS+= -DASIO_STANDALONE -Wall -O0 -g -std=c++11
CPPFLAGS+=-I./include -I./asio-1.12.2/include -I./src ${GTKCOMPILEFLAGS}
LDLIBS+= -lpthread ${GTKLINKFLAGS}

clean:
    -rm -rf asio-1.12.2
    -rm -f src/client
    -rm -f src/chat_server

标签: gtkmm

解决方案


我可以重现你的错误。在:

client : src / client.cpp src / mainwin.cpp src/*.h
    $(CXX) $(CXXFLAGS) src/client.cpp src/mainwin.cpp $(GTKFLAGS) -o src/client

您正在使用$(GTKFLAGS)哪个是空的。要注意它,请键入:make -n. 在你的情况下替换它,$(GTKCOMPILEFLAGS) $(GTKLINKFLAGS)但这不是一个很好的修复,因为你应该分开你的 Makefile 规则:

  • 一个用于将每个 cpp 文件编译成目标文件 (.o)
  • 以及将所有对象文件链接到二进制文件的一条规则。

推荐阅读