c - 如何告诉 GNU MAKE 将 .po 文件视为 .h 文件?
问题描述
我有一个 .c 文件,它依赖于生成的名为 control.po 的包含文件,但是当它包含在依赖项中时,make 认为它需要构建它。
make[1]: *** No rule to make target `control.po', needed by `proccmd.o'. Stop.
proccmd.o: ddemsgid.do ddelen.do control.po tprecs.ro tlktp.h comtrac.h basmsg.fo \
tiop.h
如果我将 control.po 复制到 control.fo 并更改依赖项 control.po,它将编译。
我尝试过以这种方式更改 .SUFFIXES
.SUFFIXES:
.SUFFIXES: .c .o .h .po
和这个
.SUFFIXES:
.SUFFIXES: .c .o .h
结果相同。
我假设有一些关于 .po 文件的隐含规则。
我正在将一个大型项目从专有版本转换为 gnu make,因此我无法轻松更改生成文件的文件扩展名。
解决方案
我假设有一些关于 .po 文件的隐含规则。
错误的假设。内置规则是通过获得的make -p
,他们没有提到.po
正如我在评论中所说:
在构建大型项目时,ninja更适合(默认并行运行,喜欢
make -j
而且运行速度更快)。如果您从专有构建系统迁移,它可能会更好。您需要编写或找到您的build.ninja
生成器(例如,使用 Python 脚本生成它,使用meson等...)。如果你继续使用 GNU
make
,你应该为你的后缀添加你自己的配方和规则.po
(假设你foo.po
是从 some 生成的foo.src
)。所以阅读GNU 的文档,make
你可能想要一些规则,比如%.po: %.src # how to build a .po from some .src fle
你会发现使用remake with
-x
来调试你的Makefile
推荐阅读
- vue.js - Vuetify 分页如何在 rowsPerPage 属性更改时更改页面属性
- sql - 动态 SQL WHILE 在管理工作室的结果窗格中导致许多 windows
- sas - SAS 宏循环直到 obs 计数 >0
- oracle - 添加信息时 SIT 出现错误 (Oracle eBS 11i)
- python - Python 3.6 Pandas - 左对齐数据框中的数据
- python - PyCharm 聚焦 Python 控制台,用于在运行时进行输入
- java - 动态配置 dev 和 prod 数据源以根据环境加载
- python - 在一列中查找重复项,在另一列中查找非重复项
- mysql - 如何连接具有多个条件的 3 个 MYSQL 表,即使第三个表中没有数据
- xslt-1.0 - 如何在 XSLT 翻译中使用的 AllowedSymbols 变量的值中添加双引号和单引号