c++ - 为什么项目中没有必要的头文件?
问题描述
我经常下载一个 C/C++ 项目并尝试编译它只是为了玩它。几乎 100% 的情况下,make
orconfigure
命令都会失败,我会在依赖关系树中走下坡路,遇到一个我不知道如何解决的错误,然后放弃。这可能是一个比头文件更广泛的问题,但似乎该make
过程通常需要在特定位置为特定版本的库提供一些 .h 文件,而我的系统上不存在这些文件。
如果项目需要这些特定的头文件,作者为什么不将它们复制到项目源代码树中呢?一般来说,要求以这种特定方式设置开发机器不是很疯狂吗?如果有人想要处理两个项目,并且他们需要冲突版本的头文件怎么办?
一个明显的解决方案是在构建过程中包含一个 Dockerfile,但我感兴趣的是这种情况最初是如何出现的,以及是否有理由不只包含必要的头文件,这似乎至少是部分解决方案.
解决方案
头文件有什么好处?您需要实际的库,而不仅仅是头文件。
那么为什么他们不包括整个图书馆呢?
有些图书馆很大。比程序大得多。
因为它们很大,编译它们需要很长时间。
您不想为每个项目在计算机上安装每个库的单独副本。这是浪费空间,如果两个不同的版本试图互相交谈会发生什么?
库会更新,您不希望每次更新库时都必须更新项目。
版权意味着您不能在未经许可的情况下合法地赠送图书馆的副本。通常图书馆的创建者会给你权限。有时他们不会。
推荐阅读
- python-2.7 - Gimp python-fu ,打开目录选择对话框
- mysql - 使用 SQL 计算文本出现的次数
- ajax - 一种让 webapp 监听服务器的方法
- r - ggplot2 中的图例 - 使用因子标签
- java - 模拟单例的 getInstance() 以返回子类 (Quarkus)
- mysql - 在 docker 上使用 MySql 运行 Keycloak - 无法启动
- mysql - 为什么 laravel 选择和分组返回相同的值
- python - python - 有关列表(生成器)期望行为的文档
- regex - 如何匹配行的正则表达式只有一个数字,所有单词反之亦然?
- php - Yii2 ExpandRowColumn 不能与 ScrollPager 一起使用