首页 > 解决方案 > 为什么项目中没有必要的头文件?

问题描述

我经常下载一个 C/C++ 项目并尝试编译它只是为了玩它。几乎 100% 的情况下,makeorconfigure命令都会失败,我会在依赖关系树中走下坡路,遇到一个我不知道如何解决的错误,然后放弃。这可能是一个比头文件更广泛的问题,但似乎该make过程通常需要在特定位置为特定版本的库提供一些 .h 文件,而我的系统上不存在这些文件。

如果项目需要这些特定的头文件,作者为什么不将它们复制到项目源代码树中呢?一般来说,要求以这种特定方式设置开发机器不是很疯狂吗?如果有人想要处理两个项目,并且他们需要冲突版本的头文件怎么办?

一个明显的解决方案是在构建过程中包含一个 Dockerfile,但我感兴趣的是这种情况最初是如何出现的,以及是否有理由不只包含必要的头文件,这似乎至少是部分解决方案.

标签: c++cmakefileheader-files

解决方案


头文件有什么好处?您需要实际的库,而不仅仅是头文件。

那么为什么他们不包括整个图书馆呢?

  • 有些图书馆很大。比程序大得多。

  • 因为它们很大,编译它们需要很长时间。

  • 您不想为每个项目在计算机上安装每个库的单独副本。这是浪费空间,如果两个不同的版本试图互相交谈会发生什么?

  • 库会更新,您不希望每次更新库时都必须更新项目。

  • 版权意味着您不能在未经许可的情况下合法地赠送图书馆的副本。通常图书馆的创建者会给你权限。有时他们不会。


推荐阅读