我想包含一个来自internet的标头。例如:文件add.h和add.cpp已经发布到github.com
文件add.h是int add(int a,int b);
文件add.cpp是int add(int a,int b){返回a+b;}
在我的main.cpp中,我想要这样的代码
#include "github.com/xxx/add.h"
int main(){
int a = add(1,1);
}
编译开始时,编译器可以从github.com 自动下载add.cpp
这会发生吗?
不,这不会发生(假设您没有使用某种获取机制)。预处理器使用#include
指令只包含本地文件。
C++不像Go或Javascript那样工作
托管在github上的文件应该使用git签出,然后使用。
我建议在继续之前阅读C++和Git书籍(或您的编译器/构建系统手册以添加额外的获取步骤)
C++本机不支持该功能。你必须自己建造。
你可以在你的构建系统中添加一个额外的步骤,即
- 解析源代码中包含的内容,如上面示例中的内容
- 下载include文件(以及以某种方式所需的
*.cpp
) - 生成引用下载文件的源代码的更新版本
- 然后像往常一样继续构建
这是大量的工作。
最好研究一下CMake的ExternalProjects
。这个功能可以下载、构建和安装依赖项,这样你的项目就可以使用它。当然,也有其他技术(@comments请添加你的收藏夹)。
更新:(感谢@Angew)
从技术上讲,C++没有指定如何处理#include指令的参数。这是所有已知的编译器;本机不支持此功能;而不是C++本身。支持这一点的编译器可以完全符合标准。