gpt4 book ai didi

c++ - 使用 bjam 构建两个具有相同源的库

转载 作者:行者123 更新时间:2023-11-30 05:23:01 26 4
gpt4 key购买 nike

我正在使用 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:

有谁知道让目标的中间文件转到不同位置的方法吗?谁能想到更好的方法来实现我想要做的事情?

最佳答案

定义为 free, and incidental, features并且不影响构建变体。您需要做的是创建一个非偶然的特征来描述改变您的生成结果的属性。例如:

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 ;

上面使用目标要求来定义当您要求特殊功能时构建哪个库。它还使用条件属性来定义特殊库上的预定义符号。一旦定义了特征,还有其他方法可以获得相同的结果。

关于c++ - 使用 bjam 构建两个具有相同源的库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39385580/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com