![](/img/trans.png)
[英]is there some c++ library / source similar to boost program_options but for *keyboard shortcut auto-gen help* ?
[英]Distributing a program(source files) using some library
我寫了一個使用Cryptopp庫的程序。 我已經創建了靜態庫,並將其包含在我的發行版中,但是該程序還需要很多頭文件。 我的問題是我需要在發行版中包含所有這些頭文件嗎?
對於實施例,我寫其使用代碼des.h
, modes.h
和filters.h
而這又是基於在Cryptopp,長鏈其他的頭文件。 我是否包括Cryptopp庫中的所有頭文件?
更一般地說,如果我編寫一些使用其他庫的代碼(例如Cryptopp或boost),那么我需要在發行版中包含什么?
更新 :我想分發源代碼,而不僅僅是二進制文件。 這樣,如果我們願意,用戶可以從頭開始編譯我的程序。 我包括靜態庫,但對頭文件感到困惑。 我需要全部包括在內嗎?
不,您只分發二進制文件。 您不需要標題即可運行程序。
但是,如果要分發庫(而不是程序),則需要提供標頭。 您的標頭,而不是第三方標頭。
如果第三方標頭僅是實現的一部分,則可以通過多種方法來排除它們。 如果不是,則還需要提供它們。 假設您不需要,並且只在內部使用它們,則可以使用前向聲明:
//MyClass.h
class ExternalClass;
class MyClass
{
ExternalClass* p;
} ;
這樣,您只需要在實現文件中包括第三方標頭,無論如何您都不會分發。
通常,您想做兩件事之一:要么根本不分發庫,要么完全按原樣分發整個庫。
如果您僅分發二進制可執行文件,則第一個有意義。 如果要分發源代碼,則可以執行任何一種操作。 嘗試在兩者之間做一半,只分發代碼所依賴的庫的一部分,這是解決問題的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.