在每个平台上包含来自同一文件的 header

Including header from the same file on every platform

我有一个文件 cpp-options.txt,我在其中编写了用于编译 C++ 程序的每个编译器选项。

我有 made an alias g+ 作为 g++ @/path/to/cpp-options.txt $* ,所以每当我从我计算机上的任何地方调用 g+ prog.cpp 时,程序都会使用所有编译器选项进行编译从那个文件。

现在我想添加另一个选项,它在选项文件中包含一个 header 文件 header.h。此文件始终保存在与 cpp-options.txt 文件相同的目录中。
所以,现在 cpp-options.txt 文件看起来像这样 -:

-Wall -Wextra.....
-include /path/to/header.h

现在,此设置在 Windows 上完美运行,但在 Linux 上无法运行,因为 Linux 上的选项文件的绝对路径如下所示 -:

/mnt/media......../absolute/path/to/header.h

因此,编译器会抱怨 Linux 上没有任何此类文件。
现在我知道这个问题的一个解决方案,那就是将保存这两个文件的文件夹包含在两个操作系统的 PATH 环境变量中,然后简单地写 -:

-Wall -Wextra.....
-include header.h

但是,我不想污染 PATH 变量。
还有其他方法可以做到这一点吗?

我能做的最好的事情就是创建另一个通用文件 cpp-options-common.txt,其中仅包含编译器选项(-Wall、-Wextra、-std=c++14 等),然后将 -include /path/to/header.h 语句到 cpp-options.txt 文件。
此外,我使用 @ GCC 编译器指令将 cpp-options-common.txt 文件导入到 cpp-options.txt 文件中。

我的最终配置-:

cpp-options-common.txt -:(位于Windows分区)

-Wall -Wextra -Wfatal-errors ...

上Windows-:

cpp-options.txt-:

@path/to/cpp-options-common.txt
-include path/to/header.h

Linux -:

cpp-options.txt-:

@/media/Data/path/to/cpp-options-common.txt
-include /media/Data/path/to/header.h