我在一个项目中有一个不寻常的环境,我有很多文件,每个文件都是独立的独立脚本。脚本所需的所有代码必须在一个文件中,并且我不能引用带有包含等的外部文件。
所有这些文件中都有一个共同的功能,即授权是每个文件中的最后一个功能。如果这个功能完全改变(就像现在一样),它必须在所有文件中改变,并且有很多文件。
最初我考虑将授权功能保存在一个单独的文件中,并运行批处理过程,通过将auth文件与其他文件组合在一起来生成最终文件。但是,这在调试时非常麻烦,因为auth函数需要在主文件中用于此目的。因此,我总是在组合文件的文件夹中进行测试和调试,然后将更改复制回未组合的文件。
有人能想出解决这个问题的方法吗?即在多个文件中维护相同的代码片段。
答案 0 :(得分:2)
我不确定你的意思是“为此目的,auth函数需要在主文件中”,但是典型的Unix解决方案可能是在这里使用make(1)和cpp(1)。
答案 1 :(得分:1)
不确定您使用的环境/编辑器,但您可以做的一件事是使用预建事件。创建一个定义导入区域的start-tag / end-tag,然后在prebuild事件中复制标签之间的公共代码然后编译...
// $开始标签的共同-AUTH .....代码在这..... // $端标签的共同-AUTH
在prebuild事件中,只需找到这些标记,然后用导入代码替换它们,然后完成编译。
VS支持可以调用外部进程的事后构建事件,但不直接与环境交互(如批处理文件或脚本)。
答案 2 :(得分:1)
不是将身份验证代码保存在单独的文件中,而是将现有脚本之一指定为主脚本或主脚本。使用此编辑来编辑/调试/处理身份验证代码。然后像你所说的那样添加一个构建/批处理过程,将主脚本中的认证代码复制到所有其他脚本中。
通过这种方式,您仍然可以随时调试和使用主脚本,您不必再担心一个文件,并且您的构建/部署过程会使所有内容保持同步。
您可以使用像@Priyank Bolia这样的技术,以便于查找/替换所需的代码。
答案 3 :(得分:0)
我能想到的丑陋方式:
在所有文件中都有原始代码,并用以下标记包围它:
///To be replaced automatically by the build process to the latest code
String str = "my code copy that can be old";
///Marker end.
此代码块可以由构建过程从一个公共代码文件自动替换。