Требовать boost::dynamic_bitset<> в extconf.rb

Я нахожусь в процессе выпуска моего расширения Ruby C/C++ и пытаюсь удостовериться, что все необходимые библиотеки перечислены в extconf.rb. Я не смог понять, как требовать библиотеку наддува и особенно класс dynamic_bitset<>.

Что я пробовал до сих пор:

# Require used libraries
have_library("stdc++")
have_library("boost", "boost::dynamic_bitset<>")

Несмотря на то, что у меня установлен boost, и расширение компилируется отлично, я получаю следующее:

$ ruby extconf.rb
checking for main() in -lstdc++... yes 
checking for boost::dynamic_bitset<>() in -lboost... no

Любые идеи о том, как правильно требовать повышения для установки?

1 ответ

dynamic_bitset не определен в библиотеке, это компонент повышения только для заголовка. Вы можете узнать, какие компоненты повышения этого типа здесь:

http://www.boost.org/doc/libs/1_57_0/more/getting_started/unix-variants.html

Я проверил это, пример на

http://www.boost.org/doc/libs/1_57_0/libs/dynamic_bitset/example/example1.cpp

скомпилировано без каких-либо библиотек:

g++ example1.cpp -o boost_test

Так что вам вообще не нужно искать библиотеку boost, но вы можете искать заголовок boost, используя have_header(), find_header(), dir_config(),

Если вам нужно вдохновение, Google для extconf.rb и boost и have_header, вы можете найти некоторые файлы extconf.rb на github.

Другие вопросы по тегам