Распространение программы (исходных файлов) с использованием некоторой библиотеки - PullRequest
0 голосов
/ 12 марта 2012

Я написал программу, которая использует библиотеку Cryptopp. Я создал статическую библиотеку и включу в нее свой дистрибутив, но программе также требуется много заголовочных файлов. У меня вопрос: нужно ли включать все эти заголовочные файлы в мой дистрибутив?

Например, я написал код, который использует des.h, modes.h и filters.h, который, в свою очередь, основан на других заголовочных файлах в Cryptopp, длинной цепочке. Я включаю все файлы заголовков из библиотеки Cryptopp?

Делая это более общим, если я напишу какой-нибудь код, который использует другие библиотеки (например, Cryptopp или boost), что мне нужно включить в дистрибутив?

Обновление : Я хочу распространять исходный код, а не только двоичные файлы. Так что пользователь может скомпилировать мою программу с нуля, если мы захотим. Я включил статическую библиотеку, но запутался в заголовочных файлах. Нужно ли включать их все?

Ответы [ 2 ]

3 голосов
/ 12 марта 2012

Нет, вы распространяете только двоичные файлы.Вам не нужны заголовки для запуска программы.

Если, однако, вы распространяете библиотеку (не программу), вам необходимо предоставить заголовки.Ваши заголовки, а не сторонние заголовки.

Вы можете исключить сторонние заголовки с помощью ряда методов, если они являются только частью реализации.Если нет, вам нужно будет также предоставить их.Предполагая, что вам это не нужно, и вы используете их только для внутреннего использования, вы можете использовать предварительные объявления:

//MyClass.h
class ExternalClass;
class MyClass
{
   ExternalClass* p;
} ;

Таким образом, вам нужно только включить сторонний заголовок в файл реализации, который выне распространять в любом случае.

0 голосов
/ 12 марта 2012

Как правило, вы хотите сделать одну из двух вещей: либо вообще не распространять библиотеку, либо распространять библиотеку целом , в точности как есть.

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

...