如何使用GCC选项-iprefix和-iwithprefix?

我有一个C ++应用程序,该应用程序分为模块。每个模块的目录结构如下:

module_a/
  export/  <-- module_a public interface
  src/     <-- module_a private source
  test/
    src/   <-- unittests for module_a

我正在使用CMake设置模块依赖关系并构建应用程序。如果module_a依赖于module_b,则在构建module_b时,会将export的{​​{1}}目录添加为包含路径。

因此,如果存在module_a需要的文件module_b/export/foo.h,则在源文件中,您将使用module_a

我正在寻找一种制作方法,以使模块名称成为include指令的一部分。因此,对于上面的示例,我想(必须)写#include "foo.h"

可以使用GCC选项-iprefix和-iwithprefix完成吗?我已经搜索了使用示例,但是我只能找到GCC手册的副本和参考,我认为这并不能很好地解释它。

我试图通过这种方式使用它:

#include "module_b/foo.h"

但是如您所见,它不起作用。我应该如何使用-iprefix和-iwithprefix?

还有,有人可以解决我的问题吗?我有点担心IDE和其他编译器可能不理解-iprefix和-iwithprefix,因此也欢迎任何其他解决方案。

编辑:发布此问题后,我立即意识到,也许$ find -type f ./src ./src/main.cc ./export ./export/bar.h $ g++ -iprefix foo/ -iwithprefix export/ src/main.cc src/main.cc:1:10: fatal error: foo/bar.h: No such file or directory 1 | #include "foo/bar.h" | ^~~~~~~~~~~ compilation terminated. $ gcc --version gcc (Debian 9.2.1-17) 9.2.1 20191102 只是一种写-iprefix foo/ -iwithprefix bar的奇特方式。但是,我对此进行了测试,但仍然无法正常工作。因此,即使有人不能解释这些选项的工作方式,即使它们不会帮助我解决我的问题,也仍然是一个好习惯。

houyong888 回答:如何使用GCC选项-iprefix和-iwithprefix?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3138123.html

大家都在问