Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将COPT传播到Bazel中的所有依赖项 我有一个C++ BAZEL项目,每个目标应该根据其父目标接收不同的编译器标志(通过 COPTS < /代码>)。例如,考虑依赖关系图:_C++_Bazel - Fatal编程技术网

将COPT传播到Bazel中的所有依赖项 我有一个C++ BAZEL项目,每个目标应该根据其父目标接收不同的编译器标志(通过 COPTS < /代码>)。例如,考虑依赖关系图:

将COPT传播到Bazel中的所有依赖项 我有一个C++ BAZEL项目,每个目标应该根据其父目标接收不同的编译器标志(通过 COPTS < /代码>)。例如,考虑依赖关系图:,c++,bazel,C++,Bazel,我希望在target 1和target 2中定义的不同COPT能够独立地向下传播到每个依赖性目标。换句话说,我希望每个依赖关系目标接收其父目标中定义的COPT。这意味着编译每个依赖项目标将产生两个不同的已编译二进制文件,具体取决于依赖它的父目标 巴泽尔能做到这一点吗?如果没有,是否有其他方法可以实现相同的结果?最简单的方法是显式复制所有依赖目标。您可以避免在构建文件中使用。然后,当您想要构建或依赖其中一个时,您只需选择要使用的版本,因为它们具有不同的名称 更复杂的方法为您提供了不同的方法来选择使

我希望在
target 1
target 2
中定义的不同
COPT
能够独立地向下传播到每个
依赖性
目标。换句话说,我希望每个
依赖关系
目标接收其父目标中定义的
COPT
。这意味着编译每个
依赖项
目标将产生两个不同的已编译二进制文件,具体取决于依赖它的父目标


巴泽尔能做到这一点吗?如果没有,是否有其他方法可以实现相同的结果?

最简单的方法是显式复制所有依赖目标。您可以避免在
构建
文件中使用。然后,当您想要构建或依赖其中一个时,您只需选择要使用的版本,因为它们具有不同的名称

更复杂的方法为您提供了不同的方法来选择使用哪个版本的
依赖项A
。如果
依赖关系
目标是二进制文件(例如),那么我看不到更复杂的方法有任何优势

如果它们是整个依赖图中的库,那么A可能是有意义的。自动复制所有中间目标,而无需修改所有其他规则定义以使用复制它们的宏。然后,您可以在

目标1
目标2
之间切换,并使用匹配的
COPT

变得更加复杂,你可以使用或完全使用,但我看不出有任何理由这样做