首页 > 解决方案 > 为什么我生成的 .a 静态库包含对我个人计算机的路径/引用?

问题描述

我使用这个 CMakeLists.txt 来生成一个静态库:

target_include_directories(app PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
add_library(lib STATIC "")
target_sources(lib PRIVATE lib.c)
target_include_directories(lib PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/)
target_link_libraries(app PRIVATE lib)

在这种情况下,生成的.a文件只有 2kB,并且不包含对我本地 PC 上构建文件夹的任何引用。

但是,当我想引用另一个库(Zephyr RTOS 内核库)时,突然生成的.a文件变成了 9kB,并且它包含对构建文件夹的引用。我所做的只是将这一行添加到 CMakeLists.txt:

target_link_libraries(lib PRIVATE kernel)

我该如何解决这个问题?现在我不能.a在除我自己的计算机之外的任何其他计算机上使用库文件,因为引用了我的 PC 上的绝对路径。

我是否需要使用抽象层来抽象出我的静态库中的所有 Zephyr 特定代码?

标签: ccmakestatic-libraries

解决方案


推荐阅读