在include中使用定义的值

时间:2014-06-10 13:08:08

标签: c++ c compilation c-preprocessor

我有#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。 有没有办法实现它?

2 个答案:

答案 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