GCC预编译标头,多种构建配置和-I -

时间:2015-12-29 19:27:59

标签: c++ gcc precompiled-headers

在以下情况下,使用GCC设置预编译头是有问题的:

  • somefile.cpp和precompiledheader.h在同一目录中
  • 需要多个构建配置

多个构建配置需要多个生成的.h.gch文件,因此无法将它们并排构建到源目录中。 -o选项允许我们将它们输出到不同的位置:

-o "out/$BuildConfig$/precompiledheader.h.gch"

问题是按摩somefile.cpp的包含搜索行为,以便GCC找到并使用.h.gch。我们可以将生成的.h.gch位置添加到包含搜索路径:

-Iout/$BuildConfig$

但在正在编译的对象的目录之后,检查此目录。由于预编译头和somefile.cpp位于同一目录中,因此预先在源目录中首先找到precompiledheader.h,并且永远不会使用.h.gch。

我设法通过使用-I-注入.h.gch目录来使其工作,以抑制并重新添加somefile.cpp目录:

-I- -Iout/$BuildConfig$ -I.

这样可行,但是-I-被标记为已弃用并生成一个注释:

  

cc1:注意:过时选项-I-使用,请改用-iquote

-iquote不允许您禁止当前目录,因此无法替代。

如果不使用-I-,还有另一种方法吗?或者我只需要接受“过时选项”警告?

PS - Clang和MSVC允许您明确指定pch / gch的位置(分别通过-include-pch和/ Yu),这避免了所有这些麻烦。非常需要gcc的类似选项。

0 个答案:

没有答案