我已经在windows和osx上构建了对android的提升,并且遇到了升级库名称的问题。在Windows上,boost会为库名添加一些说明符,例如libboost_filesystem-gcc-mt-s-1_46.a但是在osx上它省略了所有附加信息,只是:libboost_filesystem.a。
现在问题出在我的Android.mk文件中,我需要链接到lib,但每个平台的名称都不同。我正在寻找第一个两个解决方案之一:有没有办法告诉boost删除其他说明符,只使用你在这里看到的osx格式(无论libs是建立在什么平台上)或两个:是否有在我的Android.mk中确定构建环境是否为Windows的方法?我宁愿选择#1的解决方案,但是任何一个人都会让我这一点。
谢谢!
答案 0 :(得分:1)
来自bjam --help
列表:
<强>
--layout=<layout>
强>确定是否选择库名称和标题位置,以便可以在同一系统上使用多个版本的Boost或多个编译器。
- 版本化 - 增强二进制文件的名称包括Boost版本号,编译器的名称和版本以及编码的构建属性。 Boost标头安装在
<HDRDIR>
的子目录中,其名称包含Boost版本号。- tagged - boost二进制文件的名称包括编码的构建属性,例如变体和线程,但不包括编译器名称和版本,或Boost版本。如果使用相同的编译器构建Boost的多个变体,则此选项很有用。
- system - 二进制名称不包括Boost版本号或编译器的名称和版本号。 Boost标头直接安装到
<HDRDIR>
中。此选项适用于构建分发包的系统集成商。Windows上的默认值为'versioned',Unix上为'system'。
听起来你想在两个平台上使用--layout=tagged
或--layout=system
进行构建,因此生成的文件名是一致的。