如何指定不应该在Bazel中编译的源文件?

问题描述 投票:0回答:1

我正试图绕过Poco库。它包含了这样的代码。

#if defined(POCO_OS_FAMILY_UNIX)
#include "Path_UNIX.cpp"
#elif defined(POCO_OS_FAMILY_WINDOWS) && defined(POCO_WIN32_UTF8)
#if defined(_WIN32_WCE)
#include "Path_WINCE.cpp"
#else
#include "Path_WIN32U.cpp"
#endif
#elif defined(POCO_OS_FAMILY_WINDOWS)
#include "Path_WIN32.cpp"
#endif

但Bazel抱怨说 Path_*.cpp 文件,因为我没有在 srcs 节。什么是一个合适的章节来提及这些文件:它们是私有的,是源文件,不应该自己编译?

我目前的变通办法是把它们放到了 data 节,但在概念上并不相符。

更新一下。

实际上 data 部分不工作。

c++ bazel poco-libraries
1个回答
1
投票

您想使用 hdrs 属性。此外,如果这些文件是依赖的库所需要的,你可以把它添加到 textual_hdrs.

https:/docs.bazel.buildversionsmasterbec-cpp.html#cc_library.textual_hdrs。

如果你需要将这些文件从依赖的规则中隐藏起来,你需要使用genrule(或版本库级别的补丁命令)将这些文件复制到.h扩展名,并修改包含这些文件的源文件。

© www.soinside.com 2019 - 2024. All rights reserved.