Meson调用add_project_arguments指定python语言报未知语言错误如何解决
报错原因
- 该报错由Meson 0.59版本的校验逻辑变更触发:0.59及以上版本的Meson收紧了
add_project_arguments函数language参数的校验规则,要求传入的语言必须是当前项目显式声明支持、且属于Meson内置兼容的编译语言列表,未匹配的语言会直接抛出错误,而旧版本Meson只会忽略无效的language参数,不会报错。 - 你当前使用的配置本身存在冗余:
-DGETTEXT_PACKAGE是面向C/C++代码的预处理器宏定义,Python代码不需要也无法识别这类编译参数,该行配置从功能层面没有实际作用,只是旧版本Meson没有做严格校验才没有触发异常。
解决方案
- 最简方案:直接删除po/meson.build中的冗余行
删掉add_project_arguments('-DGETTEXT_PACKAGE="caja-admin"', language:'python')整行即可,该配置不影响i18n的gettext翻译生成逻辑,删除后即可正常编译。 - 如果你确实需要保留GETTEXT_PACKAGE宏定义(比如项目包含C语言代码需要用到该宏),请将
language参数修改为实际对应的编译语言,以C语言为例:
同时需要确认项目根目录的meson.build中add_project_arguments('-DGETTEXT_PACKAGE="caja-admin"', language:'c')project()声明已经添加了对应语言的支持,示例如下:project('caja-admin', 'c', version : '4.0.0', meson_version : '>=0.55', )
内容的提问来源于stack exchange,提问作者Mickey
相关产品推荐
相关产品推荐

