Ubuntu下使用meson和ninja编译Beckhoff ADS库生成指定.a静态库问询
解决方案
直接替代方案
当前构建生成的build/libADSLib.a与原AdsLib-Linux.a功能完全一致,仅命名规则随构建工具切换做了调整,可直接替代使用,两种可选操作:
- 直接将
build/libADSLib.a复制到你的业务项目依赖目录,修改业务项目的链接参数,将原-lAdsLib-Linux改为-lADSLib,或者链接时直接指定静态库完整路径即可 - 若不想修改原有业务项目的构建配置,执行
cp build/libADSLib.a AdsLib-Linux.a即可得到符合命名要求的静态库,无需调整其他逻辑
自动生成目标命名静态库的配置方法
如果需要让meson构建流程自动生成AdsLib-Linux.a,修改项目根目录的meson.build文件:
- 找到静态库定义的代码行,原配置通常为
static_library('ADSLib', 源文件列表, 编译参数...) - 修改为以下配置,原有源文件、依赖、编译参数全部保留不变:
os_name = host_machine.system().capitalize() static_library('AdsLib-' + os_name, # 此处保留原配置中所有的源文件、依赖、编译参数等内容 ... )
- 重新执行构建命令:
meson setup build --reconfigure ninja -C build
构建完成后会在build目录下生成libAdsLib-Linux.a,若需要直接输出到根目录,可在meson.build末尾添加自定义复制命令,或构建完成后手动移动即可。
注意:当前仓库主分支已完全废弃旧Makefile构建体系,example目录下的Makefile仅用于示例项目编译,不能用于构建库本身,无需再尝试基于旧Makefile的构建流程。
内容的提问来源于stack exchange,提问作者Davide Mannone
相关产品推荐
相关产品推荐

