Почему в проект не включены необходимые заголовочные файлы? - PullRequest
0 голосов
/ 03 марта 2020

Я часто скачивал проект C / C ++ и пытался скомпилировать его, чтобы поиграть с ним. Почти в 100% случаев команда make или configure терпит неудачу, я go частично прохожу по дереву зависимостей, сталкиваюсь с ошибкой, которую не знаю, как решить, и сдаюсь. Это может быть более широкой проблемой, чем просто заголовочные файлы, но, похоже, довольно часто процесс make требует наличия некоторых файлов .h для указанной c версии библиотеки в указанном c месте, и они в моей системе их нет.

Если проекту нужны эти указанные c заголовочные файлы, почему автор не копирует их в исходное дерево проекта? Разве не безумно требовать, чтобы машина разработки была настроена таким специфическим образом c в целом? Что если кто-то хочет работать над двумя проектами и им требуются конфликтующие версии заголовочных файлов?

Одним из очевидных решений было бы включение Dockerfile для процесса сборки, но меня интересует, как возникла эта ситуация. во-первых, и есть ли какое-то обоснование не только для включения необходимых заголовочных файлов, что выглядит как хотя бы частичное решение.

1 Ответ

5 голосов
/ 03 марта 2020

Что хорошего в заголовочных файлах? Вам нужна настоящая библиотека, а не только заголовочные файлы.

Так почему же они не включают всю библиотеку?

  • Некоторые библиотеки очень большие. Гораздо больше, чем программа.

  • Поскольку они большие, их сборка занимает много времени.

  • Вы не хотите иметь отдельная копия каждой библиотеки, установленной на вашем компьютере для каждого проекта. Это пустая трата времени, и что произойдет, если две разные версии попытаются общаться друг с другом?

  • Библиотеки обновляются, и вам не нужно обновлять свой проект каждый раз, когда Библиотека обновляется.

  • Авторские права означают, что вы не можете на законных основаниях отдавать копии библиотеки без разрешения. Обычно создатель библиотеки дает вам разрешение. Иногда нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...