传递额外的编译标志以调试 bitbake 配方中的构建

Passing extra compilation flags to debug build in bitbake recipe

当 Bitbake 为配方构建 -dev 和 -debug 时,是否可以为特定配方定义特定于调试构建的编译定义。假设我在 DEBUG_INFO 下有一些食谱的源代码,即

#ifdef DEBUG_INFO

........... do something

#endif /* DEBUG_INFO */

并在 bitbake 环境中使用 cmake。

我希望为 .debug 文件夹中生成的调试二进制文件启用此标志。这可能吗? 如果我使用 EXTRA_OECMAKE = "-DDEBUG_INFO" 它会同时启用开发和调试版本。

不,这是不可能的。一个食谱的所有包都是一次性构建的,它们只是相同的文件,但以某种方式分开了。

唯一的区别是配方的“特殊风味”(原生、nativesdk、target、multilib、特定于工具链的配方等),在这种情况下,你可以有不同的标志,但仍然,所有构建这种“风味”的包将使用相同的标志构建。

如果你想构建另一个包的变体,其中在编译中设置了某个 CMake 标志,你可以创建配方的变体。如果主配方名为 my-app_git.bb,您可以创建另一个名为 my-app-tweak_git.bb 的配方文件和一个通用基础 my-app.inc。在 bb 文件中,包含 inc 文件:

require my-app.inc

my-app_git.bb 中的大部分内容移至 my_app.inc,例如SRC_URI,但在 .bb 文件中为 EXTRA_OECMAKE 定义不同的内容。

现在您必须通过指定 my-appmy-app-tweak 中的哪一个来决定图像中的哪一个my-appmy-app-tweakIMAGE_INSTALL 定义中。

这不是您所要求的,但正如 qschulz 所说,您不能更改 -dev 和 -dbg 子包的内容。

还要注意 dbgdev 可以被认为是包名称变体的保留字,所以如果你想使用一些东西除了 tweak,在我的示例中,您不能使用它们中的任何一个。