0

我觉得我错过了这个的一些关键想法。

我有一个库,我想为其创建一个 CMakeLists.txt 文件。我想将它与不同的应用程序链接起来。

该库需要conf.h定义一个文件。应用程序必须提供这一点。图书馆期待它。这种关系叫什么?

我目前的解决方案CMakeLists.txt是有一个变量,如:

...
target_include_directories(lib PUBLIC
${CONF_DIR}
)

然后让应用程序定义 CONF_DIR。这很不酷,因为我不能有多个应用程序链接它。

唯一的另一种选择是将整个源库的副本保留在应用程序文件夹中,这也很不酷。

我希望最大限度地提高可重用性。我该如何处理?

旁注:对于任何熟悉的人,有问题的库是 STM32Cube 的 HAL 库,讨厌的文件是stm32h7xx_hal_conf.h.

在此处输入图像描述

4

1 回答 1

-1

您对此无能为力,因此您必须复制库代码。

头文件在库编译阶段使用,因此它的代码最终被硬连线到最终的二进制文件中。正因为如此,如果你想从头文件中改变一些参数,你需要从头开始重新编译库。

理想情况下,应该以这样的方式重写库,使得包含在标头中的所有参数都可以在运行时使用一些额外的配置 API 动态设置。

于 2021-02-04T07:11:14.113 回答