ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

找不到’gtk / gtk.h’文件即使使用pkg-config

2019-05-16 09:39:33  阅读:227  来源: 互联网

标签:c-3 linux makefile gtk gtk3


我正在使用SDL库和GTK 3在C中创建一个软件.我在特定的main.c上使用GTK 3的第一次尝试及其Makefile运行良好,但是当我尝试使用另一段代码添加我的GTK项目时我的“真正的”Makefile,即使我为GTK 3添加了相同的标志,我也无法编译并获得gtk / gtk.h文件没有找到错误.我访问了许多有关此错误的主题,但我仍然无法使其正常工作.

这是我的旧Makefile,让事情有效:

CC=clang
CPPFLAGS= `pkg-config --cflags gtk+-3.0`
CFLAGS= -Wall -Wextra -std=c99 -O2
LDFLAGS=
LDLIBS= `pkg-config --libs gtk+-3.0` `pkg-config gmodule-2.0 --libs`
SRC= main.c
OBJ= ${SRC:.c=.o}
all: main
main: ${OBJ} -lm
clean:
rm -f *~ *.o main

这是我用于项目的那个:

CC=clang

CPPFLAGS= `pkg-config --cflags sdl gtk+-3.0`
CFLAGS= -Wall -Wextra -Werror -std=c99 -O2 -pedantic
LDFLAGS=
LDLIBS= `pkg-config --libs sdl` `pkg-config --libs gtk+-3.0` `pkg-config  gmodule-2.0 --libs` -lgtk -lgdk -lglib -lX11 -lXext -lSDL -lSDL_image -lm

SRCDIR   = src
OBJDIR   = obj
BINDIR   = bin

TARGET = main

SOURCES  := $(wildcard $(SRCDIR)/*.c)
INCLUDES := $(wildcard $(SRCDIR)/*.h)
DEPENDS  := $(wildcard $(OBJDIR)/*.d)
OBJECTS  := $(SOURCES:$(SRCDIR)/%.c=$(OBJDIR)/%.o)
rm       = rm -f

all: makedirs $(BINDIR)/$(TARGET)

$(BINDIR)/$(TARGET): $(OBJECTS)
@$(CC) $(OBJECTS) $(LDLIBS) -o $@
@echo "Linking complete!"

$(OBJECTS): $(OBJDIR)/%.o : $(SRCDIR)/%.c
@$(CC) $(CFLAGS) -c $< -o $@
@echo "[OK] Compiled "$<""

makedirs:
@mkdir -p $(OBJDIR)
@mkdir -p $(BINDIR)
@echo "[OK] Created directories : $(BINDIR) $(OBJDIR)"
[....] etc

而错误:

src/main.c:2:14: fatal error: 'gtk/gtk.h' file not found
#include <gtk/gtk.h>

坦克注意:)

[编辑]

~                                                                              
  ▶ pkg-config --libs gtk+-3.0
  -lgtk-3 -lgdk-3 -lpangocairo-1.0 -lpango-1.0 -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0 

  ~                                                                              
  ▶ pkg-config --cflags sdl gtk+-3.0
  -D_GNU_SOURCE=1 -D_REENTRANT -pthread -I/usr/include/SDL -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng12 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include 

和main.c的标题:

  #include <gtk/gtk.h>    
  #include <stdio.h>    
  #include <stdlib.h>     
  #include "neural.h"

最佳答案:

你只是忘了将CPPFLAGS添加到规则$(OBJECTS)

它应该看起来像:

$(OBJECTS): $(OBJDIR)/%.o : 

$(SRCDIR)/%.c @ $(CC)$(CFLAGS)$(CPPFLAGS)-c $< -o $@ @echo“[确定]已编译”$<“”

标签:c-3,linux,makefile,gtk,gtk3
来源: https://codeday.me/bug/20190516/1114590.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有