【问题标题】:What does -I imply here in g++ command? [closed]-I 在 g++ 命令中的含义是什么? [关闭]
【发布时间】:2013-10-27 15:30:31
【问题描述】:

我理解用g++编译时,-I是用来包含头文件的,-L是用来链接库文件的。但这是来自google-breakpad minidump_file_writer_unittest 的g++ 编译命令,位于33 行:

g++ -I../ ../common/convert_UTF.c \
 ../common/string_conversion.cc \
 minidump_file_writer.cc \
 minidump_file_writer_unittest.cc \
 -o minidump_file_writer_unittest

现在-I../ 到底意味着什么?是不是包含了这个目录和子目录里面的所有头文件?

【问题讨论】:

标签: c++ linux g++


【解决方案1】:

-I 选项指定编译器应在其中查找头文件的额外目录,-I../ 指定额外目录是运行g++ 命令的父目录。其中两个源文件也位于父目录(的子目录)中。 / 是可选的;使用-I .. 编译可以正常工作(标志和值之间的空格也是可选的)。

请注意,-I 选项没有(直接)说明包含哪些头文件;它只是说在哪里寻找标题。源代码#include 行指示包含哪些标头。

【讨论】:

  • 谢谢乔纳森。快速提问:所以它现在会在这个父目录下的所有子目录中查找,包括头文件的父目录?我说的对吗?
  • 并非如此。当预处理器看到#include "header1.h" 时,它将在继续查找其他标准位置之前查找文件../header1.h。如果它看到#include "subdir/header2.h",它将在继续查找其他标准位置之前查找文件../subdir/header2.h。如果它看到#include "../other/header3.h",它会先查找文件../../other/header3.h,然后再查找其他地方。一般使用"header.h" 表示法,它会先查找当前目录;对于<header.h> 表示法,它不会。
猜你喜欢
  • 1970-01-01
  • 2015-01-05
  • 2014-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多