C++交叉文件夹包括失败

jam*_*jam 1 c++ include

我有一个项目有两个源文件夹(main和lib).它生成一个共享库和一个可执行文件.它目前是这样构建的:

  • 将两个文件夹中的所有文件复制到新的临时文件夹中
  • 运行lib_makefile
  • 运行main_makefile
  • 复制二进制文件
  • 删除临时文件夹

这给我的印象是做事一个奇怪的方式,所以我试图通过增加建设各就地-I../main至lib_makefile(反之亦然).不幸的是,这似乎不起作用.

说明性示例:foo.cpp(在lib中)包括bar.h(在main中),其中包括baz.h(在lib中).

当我尝试编译共享库时,它正确地在main /中找到bar.h,但是然后用"没有这样的文件或目录"来声明它找不到baz.h,即使baz.h在同一个目录中也是如此. lib_makefile!

所有包含的格式为#include"xxx.h"(即include语句中没有相对路径).

有没有办法让这个工作?我觉得我必须遗漏一些明显的东西......

(nb:我不能修改#includes,因为其他人仍然构建这个副本 - 所有 - 跨越方式)

Som*_*ude 5

您应该添加类似-I../lib(或任何库路径)的内容到库的makefile.

这样做的原因是预处理器查找相对于当前文件所在目录的包含文件,而不是原始文件所在的位置.