Meson编译C静态库时如何覆盖ar归档工具的默认参数
问题原因
你之前使用link_args参数不生效,是因为该参数仅作用于动态库/可执行文件的链接器(如ld、gcc链接阶段),静态库的归档工具ar的参数不受该配置控制。
正确配置方法
有两种可选方案,根据你的需求选择即可:
方案1:全局修改所有静态库的归档参数
在项目根meson.build的project声明的default_options中添加ar_args配置,直接覆盖默认归档参数:
project( 'customLog', 'c', version : '1.0.0', default_options : ['warning_level=3', 'ar_args=-ru'] )
方案2:仅修改当前静态库的归档参数
如果你不想影响项目中其他静态库的构建,可直接给目标static_library添加ar_args参数(需要Meson版本≥0.55.0):
project_target = static_library( meson.project_name(), project_source_files, install : true, c_args : build_args, gnu_symbol_visibility : 'hidden', include_directories : public_headers, # 新增行,单独指定该静态库的ar参数 ar_args : ['-ru'] )
生效说明
修改配置后必须清理原有构建目录,重新执行meson setup生成构建配置,否则缓存的旧配置不会更新,修改不会生效。重新配置后再执行编译即可看到ar命令的参数已经替换为-ru。
内容的提问来源于stack exchange,提问作者Mariano
相关产品推荐
相关产品推荐

