Как мне указать зависимости в библиотеках в Jamfiles?

Мне нужно связать набор библиотек в boost.build`. Как мне указать порядок связывания?

Это то, что у меня есть в Jamfile.

exe sim_strategy
: sim_strategy.cpp
:
<linkflags>-lOptionsUtils
<linkflags>-lVolatileTradingInfo
<linkflags>-lCommonTradeUtils
<linkflags>-lBaseUtils
<linkflags>-lTradingInfo
<linkflags>-lTradeUtils
<linkflags>-lExternalData
<linkflags>-lMarketAdapter
<linkflags>-lOrderRouting
<linkflags>-lSmartOrderRouting
<linkflags>-lInitCommon
<linkflags>-lExecLogic
<linkflags>-lRiskManagement
<linkflags>-lOptionsUtils
<linkflags>-lModelMath
<linkflags>-lORSMessages
<linkflags>-lProfiler
: <variant>debug <variant>release
;

Это производит команду как:

"g++" -L"/apps/bzip2/lib" -L"/home/gchak/boost-try/boost-install/lib" -L"/home/gchak/cvquant/basetrade_install/lib"   -o "InitLogic/bin/gcc-6.3.0/release/link-static/sim_strategy" -Wl,--start-group "InitLogic/bin/gcc-6.3.0/release/link-static/sim_strategy.o" "/home/gchak/cvquant/basetrade_install/lib/libSimPnls.a" "/home/gchak/cvquant/basetrade_install/lib/libSimMarketMaker.a" "/home/gchak/cvquant/basetrade_install/lib/libLoggedSources.a"  -Wl,-Bstatic  -Wl,-Bdynamic  -Wl,--end-group  -lBaseUtils -lCDef -lCommonDataStructures -lCommonTradeUtils -lExecLogic -lExternalData -lIndicators -lInitCommon -lMarketAdapter -lModelMath -lORSMessages -lOptionsUtils -lOrderRouting -lProfiler -lRiskManagement -lSmartOrderRouting -lTradeUtils -lTradingInfo -lUtils -lVolatileTradingInfo -lboost_date_time -lboost_filesystem -lboost_iostreams -lboost_system -lcrypto -lcurl -lz

Однако изменение порядка библиотек выполняет команду. Я не могу найти способ указать это в Jamfile.

0

Решение

Ссылка: Правильный способ включить библиотеки в boost-build

Решение, которое я нашел, состоит в том, чтобы загрузить все статические связанные библиотеки как отдельные правила. Я показываю один пример здесь.

lib OptionsUtils
: # no sources
: # requirements
<name>OptionsUtils $(dvccode-lib-search-path)
<use>CommonDataStructures <use>CDef
: # build arguments - none needed
: # usage requirements - this specifies other libraries that should be included before this
<library>CDef <library>CommonDataStructures
;

и затем измените правило построения exe на:

use-project /PDVCC : ../libdvccode ;

exe sim_strategy
:
sim_strategy.cpp
/PDVCC//OptionsUtils
/PDVCC//ModelMath
/PDVCC//ExternalData
/PDVCC//CommonTradeUtils
/PDVCC//MarketAdapter
/PDVCC//InitCommon
/PDVCC//ExecLogic
/PDVCC//Profiler
/PDVCC//OrderRouting
/PDVCC//TradeUtils
/PDVCC//TradingInfo
/PDVCC//SmartOrderRouting
/PDVCC//RiskManagement
/PDVCC//RiskManager
/PDVCC//VolatileTradingInfo
:
: <variant>debug <variant>release
;
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]