我有一个文件 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 变量。
还有其他方法可以做到这一点吗?
最佳答案
我能做的最好的事情就是创建另一个通用文件 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
关于c++ - 在每个平台上包含来自同一文件的 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29318966/