我正在使用SWIG在PHP中包装C ++库,并且在某些情况下我想修改生成的代码(生成的C ++和PHP):
我目前正在使用patch
自动执行这些修改。这种方法有效,但似乎高度维护和脆弱。有没有更好的方法呢?
答案 0 :(得分:1)
你最后可能会遇到维护噩梦。您可以考虑使用另一种生成方法来代替SWIG:
使用第三方生成器的问题在于它们永远不会真正生成您想要的内容。编写自己的代码生成器的问题在于它的工作量要大得多。你选择。
但是用其他自动化纠正自动化......
答案 1 :(得分:1)
代码生成是一个相当广泛的主题,并且肯定还有许多其他方法,如上所述,这些方法对您来说可能更具吸引力。 但是,如果您不想使用其他工具,则根据生成的代码和PHP OO功能,您可以使用Generation Gap pattern。
答案 2 :(得分:1)
最好的办法是让您的代码生成器根据您的需要生成正确的代码。手动调整生成的输出是不可持续的。只要输入发生变化,您就必须再次调整它。
如果某个工具产生扁平错误的输出,则理想的是修复它并将补丁提交给维护者。如果输出在某些情况下是正确的,但对您而言是错误的,我建议添加一个选项,将行为更改为您需要的内容。
有时,您可以使用一个简短的程序来自动执行修补生成代码的智能工作,这样您就不需要手动处理来制作补丁。
或者,您可以编写自己的代码生成器,但我怀疑这比您想要的工作多得多。这也取决于你在做什么。有时代码生成实际上只是宏扩展,并且在野外有很多好的工具。
祝你好运!