【发布时间】:2013-02-04 09:51:25
【问题描述】:
我正在使用仅标头库,并且只想包含我实际使用的库的一部分。
如果我包含库的一个标头,我如何才能找到该库包含的所有其他标头?或者更笼统地说:如何找到构成 C++ 翻译单元的所有文件? (我在 Linux 上使用 g++。)
编辑:gcc 的可能方法(答案摘要)
-
gcc -H 产生以下形式的输出:
... /usr/include/c++/4.6/cmath .... /usr/include/math.h ..... /usr/include/x86_64-linux-gnu/bits/huge_val.h ..... /usr/include/x86_64-linux-gnu/bits/huge_valf.h不过,您必须手动过滤掉系统标头。
-
gcc -E 为您提供原始预处理器输出:
# 390 "/usr/include/features.h" 2 3 4 # 38 "/usr/include/assert.h" 2 3 4 # 68 "/usr/include/assert.h" 3 4 extern "C" { extern void __assert_fail (__const char *__assertion, __const char *__file, unsigned int __line, __const char *__function) throw () __attribute__ ((__noreturn__));您必须手动解析线标记。见:http://gcc.gnu.org/onlinedocs/cpp/Preprocessor-Output.html
-
gcc -M 为给定的源文件生成一个 Make 文件。输出如下:
object.o: mylibrary/object.h /usr/include/c++/4.6/map \ /usr/include/c++/4.6/bits/stl_tree.h \ /usr/include/c++/4.6/bits/stl_algobase.h \ /usr/include/c++/4.6/x86_64-linux-gnu/./bits/c++config.h \
【问题讨论】:
标签: c++