У меня проблема со связанной библиотекой.
Я установил его версию через brew, но позже узнал, что мне нужно добавить флаги среды в сборку:
CXXFLAGS="-stdlib=libstdc++ -mmacosx-version-min=10.6" \
LDFLAGS="-stdlib=libstdc++ -mmacosx-version-min=10.6"
поэтому я установил другую версию в opt / local / lib, которая была собрана с использованием флагов. Моя проблема в том, что ОС все еще использует установленную версию brew. Я искал, но не могу узнать, как получить ссылку на os на правильно собранную библиотеку или собрать версию brew с флагами.
Причина, по которой я считаю, что это проблема, заключается в том, что при построении Quantlib-Swig для Ruby я получаю следующие ошибки, которые, по словам пары форумов, связаны с флагами среды:
creating Makefile
compiling quantlib_wrap.cpp
In file included from quantlib_wrap.cpp:2647:
In file included from /usr/local/Cellar/quantlib/1.6.1/include/ql/quantlib.hpp:47:
In file included from /usr/local/Cellar/quantlib/1.6.1/include/ql/math/all.hpp:35:
In file included from /usr/local/Cellar/quantlib/1.6.1/include/ql/math/matrixutilities/all.hpp:4:
In file included from /usr/local/Cellar/quantlib/1.6.1/include/ql/math/matrixutilities/basisincompleteordered.hpp:25:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/valarray:4035:59: error:
'value_type' is a private member of
'boost::iterators::detail::operator_brackets_proxy<QuantLib::step_iterator<double
*> >'
__val_expr<_BinaryOp<__bit_shift_left<typename _Expr::value_type>,
^
quantlib_wrap.cpp:8228:23: note: while substituting deduced template arguments
into function template 'operator<<' [with _Expr =
boost::iterators::detail::operator_brackets_proxy<QuantLib::step_iterator<double
*> >]
s << (*self)[i][j];
^
In file included from quantlib_wrap.cpp:2647:
In file included from /usr/local/Cellar/quantlib/1.6.1/include/ql/quantlib.hpp:47:
In file included from /usr/local/Cellar/quantlib/1.6.1/include/ql/math/all.hpp:35:
In file included from /usr/local/Cellar/quantlib/1.6.1/include/ql/math/matrixutilities/all.hpp:4:
In file included from /usr/local/Cellar/quantlib/1.6.1/include/ql/math/matrixutilities/basisincompleteordered.hpp:25:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/valarray:4036:46: error:
'value_type' is a private member of
'boost::iterators::detail::operator_brackets_proxy<QuantLib::step_iterator<double
*> >'
__scalar_expr<typename _Expr::value_type>, _Expr> >
^
2 errors generated.
make: *** [quantlib_wrap.o] Error 1
Что касается последней части вашего вопроса, как собрать версию brew с флагами, вы можете создать рецепт Quantlib Homebrew для OSX, используя ENV.append
в функции установки:
def install
...
if MacOS.version >= :mavericks && ENV.compiler == :clang
ENV.append "CXXFLAGS", "-stdlib=libstdc++ -mmacosx-version-min=10.6"ENV.append "LDFLAGS", "-stdlib=libstdc++ -mmacosx-version-min=10.6"end
...
system "make", "install"end