我如何在jamfiles中的库中指定依赖项
How do I specify dependencies in libraries in 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中指定它的方法。
参考:在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
;
相关文章:
- 如何从C++中的依赖类型中获得它所依赖的类型
- 将--whole archive链接器选项与CMake和具有其他库依赖项的库一起使用
- 将依赖名称显式标记为类型名和模板的奇怪之处
- 在 Windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?
- C++GTKMM gui循环依赖关系
- 通过ccmake在cmake中缓存依赖选项
- 当基类是依赖类型时,这是一个缺陷吗
- 从不同的附加依赖项中识别等同命名的函数
- 如何在 CMake 中对目标依赖项进行分组?
- 是否可以依赖函数范围的静态变量来执行程序关闭期间调用的方法?
- 为什么构建目录中新构建的共享库与安装目录中的副本具有不同的依赖项集?
- VS 2015 链接错误 无法构建依赖于 libcurl 的项目
- 通过依赖类型使用非类型模板参数的单类型模板参数类模板的部分专用化
- 为什么内存屏障依赖于变量?
- node-gyp 的先有鸡还是先有蛋的问题:指向依赖项中的头文件
- 反转依赖于 end() 的迭代器
- GCC,CMake,预编译标头和维护依赖项
- 使用 'typename' 关键字将非类型视为依赖上下文中的类型
- 使用 Git 处理 C++ Visual Studio 2019 解决方案的外部依赖项源代码管理的最佳方法是什么?
- 我如何在jamfiles中的库中指定依赖项