我有#include
个文件结构,如下所示:
#include <core/mod1/file1.hpp>
#include <core/mod1/file2.hpp>
#include <core/mod1/mod2/.../modN/fileN.hpp>
每个文件中都有这样的包含。例如,在文件core/mod1/file1.hpp
中可能有#include <core/mod3/file5.hpp>
。
这里core
是我的图书馆的名称。但我希望在整个项目中使用core_new
而不是core
,而无需修改所有文件(实际上很多)。
我试图添加一个#define core core_new
,希望能够替代我需要的东西:
#define core core_new
#include <core/mod1/file1.hpp>
#include <core/mod1/file2.hpp>
#include <core/mod1/mod2/.../modN/fileN.hpp>
但它没有这样做:core/mod1/file1.hpp
被包含在内而不是core_new/mod1/file1.hpp
。
有没有办法实现它?
答案 0 :(得分:3)
您想使用文件系统,而不是C ++编译器。创建一个新目录并将所有源文件复制/链接到那里。更改编译器中的-I
选项以使用此新目录。当然,将新文件放在新的core
目录中。这样您就不需要编辑单个源/头文件。
答案 1 :(得分:1)
您可以尝试从core_new创建一个符号链接到核心。例如,在使用ln
命令的* nix机器中。
ln -s /path/to/core_new /path/to/core
这不会创建副本,而是创建一个名为core
的core_new链接您也可以在符号链接
之前将核心内容移动到另一个文件夹mv /path/to/core /path/to/core_old