我有一个perl脚本,我想在gcc正常处理它们之前过滤掉我的cpp/h文件-基本上是一个额外的预处理步骤。是否有捷径可寻?我意识到我可以将cpp文件提供给脚本并让gcc读取stdin的输出,但这对头文件没有帮助。
最佳答案
处理此类过程的经典方法是将源代码(输入到Perl过滤器的代码)视为新语言,并带有新的文件后缀。然后,您告诉make
,从这种新文件类型编译C++源文件的方法是使用Perl脚本。
例如:
.ccp
.cc
后缀):.ccp.cc:
${FILTERSCRIPT} $<
最后一点是最棘手的。如果仅将
.ccp
后缀添加到列表中,那么当make
文件存在时,.ccp
不会真正注意.cc
文件中的更改。您要么必须删除中间.cc
文件,要么确保.ccp
在后缀列表中的.cc
之前出现。 (注意:如果您编写的“.ccp.o
”规则不包含“.ccp.cc
”规则,并且不确保清除了“.cc
”中间体,那么在编译失败后进行重建可能意味着make
仅编译“.cc
”文件,这可能令人沮丧和困惑。)如果不能更改后缀,则编写一个编译脚本来执行过滤并直接调用C++编译器。