使用bjam构建两个具有相同源的库
Use bjam to build two libraries with same sources
我正在使用Boost的bjam,我试图从同一个Jamfile构建同一个库的两个不同版本。该库的一个版本需要使用定义的宏来构建,以启用特殊功能。我希望在相同的最终位置实现两个不同的名称库。
举例来说,
lib a
: [glob a.cpp]
;
lib a_special
: [glob a.cpp]
: <define>SPECIAL_FUNCTIONALITY
;
问题是a.o
,即从a.cpp
生成的目标文件,被生成了两次——每个目标生成一次。我从bjam得到的实际错误是
error: Name clash for '<pbin/gcc-5.2.1/debug/link-static>a.o'
error:
error: Tried to build the target twice, with property sets having
error: these incompatible properties:
error:
error: - none
error: - <define>SPECIAL_FUNCTIONALITY
error:
有没有人知道一种方法来获得目标的中间文件去不同的位置?有人能想到更好的方法来实现我想要做的吗?
定义是免费的、附带的特性,不会影响构建变体。您需要做的是创建一个非偶然特性,该特性描述了改变最终构建的属性。例如:
import feature : feature ;
feature special : off on : propagated ;
lib a : a.cpp : <special>off ;
lib a_special : a.cpp : <special>on <special>on:<define>SPECIAL_FUNCTIONALITY ;
上面的使用目标需求来定义当您请求特殊功能时构建哪个库。它还使用一个条件属性来定义特殊库上的predef符号。一旦定义了特性,还有其他方法可以获得相同的结果。
相关文章:
- 如何在C++中从两个单独的for循环中添加两个数组
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 当在同一名称空间中有两个具有相同签名的函数时,会发生什么
- 如何返回一个类的两个对象相加的结果
- 如何在C++中将一个无符号的 int 转换为两个无符号的短裤?
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- 在Qt/C++中从一个代码构建两个略有不同的项目
- 如何使用 CMake 在 android 构建上编译和共享两个 c++ 库
- 链接两个使用 c++ 构建的库_static
- pair的两个构造函数几乎相同,为什么不生成构建错误?
- 如何以链式方式在两个容器上构建迭代器
- 在构建服务器上将 dll C++生成到两个平台 (x86+x64)
- C++ 字符串,用于删除字符'b'并将字符'a'替换为两个'd'的构建函数
- 将两个VS2010 C++项目构建到同一输出文件夹中
- 使用两个文本文件构建链表
- 从两个 cv::垫子和一个掩码构建 cv::垫子
- 如何使用两个已安装的opencv的新版本进行构建
- 使用bjam构建两个具有相同源的库
- 期望在两个相同平台上构建两个共享库是否合理?
- 为包含两个类的头文件构建C++文件