c - 为什么我生成的 .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 特定代码?
解决方案
推荐阅读
- eclipse - Eclipse 从不同的文件夹导入 Maven
- machine-learning - 使用带有 sklearn 的 cross_validate 方法的复合估计器,“fit_time”参数包括什么?
- go - 如何分配特定的 http 状态代码?
- python - Project Euler 22 - 得到错误的数字
- r - R markdown 中的哈佛引文格式
- python - 根据两个用户添加频道为关注者
- vector - 具有矢量扩展支持的 RISC-V 仿真器
- reactjs - Grafana 对带有画布的插件做出反应
- python - 列表操作,转换字母数字数据,同时跳过列表中的其他数据
- c++ - C++中的字符数组验证