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

标签 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 变量。
还有其他方法可以做到这一点吗?

最佳答案

我能做的最好的事情就是创建另一个通用文件 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/

相关文章:

c++ - Cygwin 警告命令

ruby - 编译 Ruby 的问题

c - 编译带有源文件和头文件的主文件

c++ - 将 C++ (qt) 程序构建为一个具有内置依赖项的可移植文件

c++ - 这是一个有效的 C 语句吗?

c++ - 如何将函数指针(我们不知道参数的函数)声明为类成员?

c++ - std::async(std::launch::deferred) + std::future::then 的行为

c++ - 即使其参数看起来正确,子字符串也会给出看似随机的结果

c - 如何在 GCC (x86_64) 中使用内联汇编进行相对跳转/调用

c++ - OpenCV - 如何正确调用 bm3dDenoising()?