当前位置:  开发笔记 > 编程语言 > 正文

g ++包括所有/ usr/include递归

如何解决《g++包括所有/usr/include递归》经验,为你挑选了1个好方法。

我正在尝试编译一个简单的程序

#include 

路径gtkmm.h/usr/include/gtkmm-2.4/gtkmm.h.除非我特别说明,否则g ++不会看到此文件-I /usr/include/gtkmm-2.4.

我的问题是,如何让g ++自动查看/usr/include其中包含的所有头文件的所有目录的递归,为什么这不是默认操作?



1> ephemient..:

在这种情况下,正确的做法是pkg-config在你的Makefile或者buildcripts中使用:

# Makefile
ifeq ($(shell pkg-config --modversion gtkmm-2.4),)
  $(error Package gtkmm-2.4 needed to compile)
endif

CXXFLAGS += `pkg-config --cflags gtkmm-2.4`
LDLIBS += `pkg-config --libs gtkmm-2.4`

BINS = program
program_OBJS = a.o b.o c.o

all: $(BINS)

program: $(program_OBJS)
        $(CXX) $(LDFLAGS) $^ $(LOADLIBES) $(LDLIBS) -o $@

# this part is actually optional, since it's covered by gmake's implicit rules
%.o: %.cc
        $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) $< -o $@

如果你失踪了gtkmm-2.4,这将产生

$ make
Package gtkmm-2.4 was not found in the pkg-config search path.
Perhaps you should add the directory containing `gtkmm-2.4.pc'
to the PKG_CONFIG_PATH environment variable
No package 'gtkmm-2.4' found
Makefile:3: *** Package gtkmm-2.4 needed to compile.  Stop.

否则,您将获得所有适当的路径和库,而无需手动指定所有路径和库.(检查输出pkg-config --cflags --libs gtkmm-2.4:远远超过你想要手动输入的数量.)

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有