Momentálne vydávam svoj Ruby C / C ++rozšírenie a pokúste sa zabezpečiť, aby všetky požadované knižnice boli uvedené v súbore extconf.rb. Nepodarilo sa mi prísť na to, ako vyžadovať podpornú knižnicu a najmä triedu dynamic_bitset <>.
To, čo som doteraz skúšal:
# Require used libraries
have_library("stdc++")
have_library("boost", "boost::dynamic_bitset<>")
Aj keď mám nainštalovanú podporu a rozšírenie sa perfektne kompiluje, zobrazuje sa mi toto:
$ ruby extconf.rb
checking for main() in -lstdc++... yes
checking for boost::dynamic_bitset<>() in -lboost... no
Máte nejaké nápady, ako správne vyžadovať inštaláciu zosilnenia?
odpovede:
0 pre odpoveď č. 1dynamic_bitset
nie je definovaný v knižnici, je to podporná súčasť iba pre hlavičku. Tu môžete zistiť, ktoré komponenty zosilnenia sú tohto typu:
http://www.boost.org/doc/libs/1_57_0/more/getting_started/unix-variants.html#header-only-libraries
Vyskúšal som to, príklad na
http://www.boost.org/doc/libs/1_57_0/libs/dynamic_bitset/example/example1.cpp
zostavené bez akýchkoľvek knižníc:
g++ example1.cpp -o boost_test
Takže vôbec nemusíte hľadať knižnicu zosilnenia, ale možno budete chcieť hľadať hlavičku zosilnenia pomocou have_header()
, find_header()
, dir_config()
.
Ak potrebujete inšpiráciu, vyhľadajte google pre extconf.rb a boost a have_header, na github nájdete nejaké súbory extconf.rb.