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

时间:2015-03-28 15:33:14

标签: c++ gcc compilation cross-platform header-files

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

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

现在我想在选项文件中添加另一个包含头文件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变量 有没有其他方法来实现这一目标?

1 个答案:

答案 0 :(得分:2)

我能做的最好的事情就是创建另一个公共文件cpp-options-common.txt,它只包含编译器选项(-Wall,-Wextra,-std = c ++ 14等),并移动{{1} }语句到-include /path/to/header.h文件 此外,我使用cpp-options.txt GCC编译器指令将cpp-options-common.txt文件导入cpp-options.txt文件。

我的最终配置 - :

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

@

在Windows上:

cpp-options.txt - :

-Wall -Wextra -Wfatal-errors ...

Linux - :

cpp-options.txt - :

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