фатальная ошибка: gtkmm.h: нет такого файла или каталога - PullRequest
0 голосов
/ 19 апреля 2020

я не мог понять, что не так в этом коде

независимо от того, что я редактирую, каждый раз выдается одна и та же ошибка

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

1 Ответ

0 голосов
/ 02 мая 2020

Я могу воспроизвести вашу ошибку. В:

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)
  • и одно правило для связывания всех файлов объектов в ваш двоичный файл.
...