gpt4 book ai didi

c++ - 如何让 GCC 在当前源文件目录之前的目录中搜索头文件?

转载 作者:IT老高 更新时间:2023-10-28 23:19:10 25 4
gpt4 key购买 nike

我在我的项目中使用 GCC 预编译的头文件进行多架构构建,但是当我尝试将其放置在与当前源目录不同的目录中时,事情就崩溃了。

该文件包含在双引号中,如果我将其更改为尖括号,它可以工作,但问题是我有很多其他项目使用相同的预编译头名称,因此将它们全部更改为尖括号是不可取的,因为它可能会在相同文件的 Visual Studio 构建中包含哪个 header 产生歧义。

GCC searches current directory for double-quote includes before its search path .我可以使用 -I- 选项(例如 -Ipch_dir.i686 -I-)来解决它,以便在当前目录之前搜索预编译头目录,但是这个选项已弃用。 GCC 建议我使用 -iquote,但它与 -I- 的效果不同。

所以问题是如何在不将所有预编译的头文件包含指令更改为尖括号并使用已弃用的 GCC 开关的情况下使其工作?

最佳答案

我找到了解决方法。

  1. 以不同的名称构建预编译的 header 。比如header是a.h,原来预编译的header是pchdir.i686/a.h.gch,构建成

    gcc a.h -o pchdir.i686/a-precompiled.h.gch
  2. 使用 GCC 的 -include 开关确保重命名的 header 包含在 之前 其他任何内容(甚至在原始 a.h 之前) ,例如

    gcc -Ipchdir.i686 -include a-precompiled.h <other arguments> <source>
  3. 源文件中的最终包含顺序是:a-precompiled.h.gcha.h,我已经用检查过了- H。包含原始 header ,但实际上并未处理,因为预编译 header 具有相同的包含保护(在构建预编译 header 后,通过在原始 header 中插入 #error 来验证)。

    <

关于c++ - 如何让 GCC 在当前源文件目录之前的目录中搜索头文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3162510/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com