【问题标题】:How to specify a remote preprocessor include path like 192.0.2.17://usr/include如何指定远程预处理器包含路径,如 192.0.2.17://usr/include
【发布时间】:2019-07-07 13:47:24
【问题描述】:

是否可以指定远程预处理器服务器的 C/C++ 包含路径?

这里的重点是有一个头文件的中心位置。这使得升级、版本一致性和许多其他事情比人们随意运行包括不同版本的事情要好得多。

最小、完整且可验证的示例

典型的包含。在 Linux 上,默认为 /usr/include/ 等;在 Windows VS 中,到 $(IncludePath) 变量中指定的位置。

#include <iostream>
int main() {
    std::cout << "hello, world" << std::endl;
    return 0;
}

现在假设我们将包含路径设置如下:

C_INCLUDE_PATH=192.0.2.17://usr/include;/usr/include;

上面会首先检查远程服务器 192.0.2.17 以查看 iostream 库是否存在。否则,/usr/include 将被检查。

为了说明这一点有点牵强:

#include <192.0.2.17://iostream>

int main() {

    std::cout << "hello, world" << std::endl;

}

谢谢,基思 :^)

【问题讨论】:

  • 我认为您必须以某种方式安装远程驱动器。 sshfs 可以在大多数 linux 机器上运行,并且某种 NFS 或 SAMBA 共享可以在 windows 上运行。然后您将设置您的 INCLUDE_PATH 指令以指向共享驱动器。
  • 投反对票,请审查标准并解释。这是一个经过深思熟虑的问题。 stackoverflow.com/help/privileges/vote-down
  • 为什么不直接使用git
  • @kmiklas 完成..
  • 就其价值而言,在我看来,您的提议似乎超出了 C++ 语言的范围。它实际上是对 host 系统如何解释文件系统和文件名的扩展。

标签: c++ c include remote-access preprocessor


【解决方案1】:

我不知道有任何编译器可以远程检索包含文件或库,因此这不是您可以直接执行的操作。

您能做的最好的事情就是将这些依赖项放在您可以挂载的 NFS 共享上,然后将该路径添加到您的包含路径中。

【讨论】:

    【解决方案2】:

    我不会在这样的代码中引用这个,正如 dbush 所说,你必须增强预处理器。

    但在 Make 系统中可能有一些可爱的方法可以做到这一点。也就是说,如果您使用 Make(例如),您可以向 Makefile 添加强制刷新数据的步骤。

    但是,我认为这是错误的,因为需要更新的不仅仅是包含文件。如果包含已更改,则相关代码可能也已更改,您也将需要这些更改。您的魔法#include 内容不会确保人们拥有包含所包含的正确代码/库。

    我不确定为什么正确使用源代码存储库还没有为您处理这个问题。

    【讨论】:

      【解决方案3】:

      既然您想要版本控制无论如何,您可以只使用git(就像其他数千个项目一样)。所以每个用户都有一个本地克隆所需的任何东西。

      回答最初的问题:不。我不知道有任何预处理器支持这种包含方案。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-22
        • 2019-06-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多