【问题标题】:How to create cmake library that expects an external header file如何创建需要外部头文件的 cmake 库
【发布时间】:2021-05-08 09:44:11
【问题描述】:

我觉得我错过了这个的一些关键点子。

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

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

我目前在CMakeLists.txt 中的解决方案是使用如下变量:

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

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

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

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

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

【问题讨论】:

    标签: c cmake embedded cmake-language cmake-format


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2017-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多