在构建解决方案之前,我想用 NAnt 修改 .h 文件中的字符串。
.h 文件中有一个宏:#define SERVER_ADDRESS "www.customserver.net" 我想在部署软件之前修改字符串,以便通过在命令行中传递地址来为自定义地址进行每次构建。
有谁知道如何做到这一点?
谢谢!
在构建解决方案之前,我想用 NAnt 修改 .h 文件中的字符串。
.h 文件中有一个宏:#define SERVER_ADDRESS "www.customserver.net" 我想在部署软件之前修改字符串,以便通过在命令行中传递地址来为自定义地址进行每次构建。
有谁知道如何做到这一点?
谢谢!
可以使用loadfile任务来帮助解决这个问题。此任务将给定文件加载到属性中。真正有用的是当您应用带有替换标记的过滤器链来替换文件的某些区域时。例如,如果要定义一个类似模板的头文件,看起来像这样:
#ifndef MyMacros_h
#define MyMacros_h
#define SERVER_ADDRESS "@SERVER_ADDRESS_TOKEN@"
#endif
可以使用 loadfile 任务将 @SERVER_ADDRESS_TOKEN@ 替换为任何字符串,然后使用echo任务将真正的头文件写回。
<loadfile file="MyMacrosTemplate.h" property="theMacrosFileContents">
<filterchain>
<replacetokens>
<token key="SERVER_ADDRESS_TOKEN" value="www.customerserver.net" />
</replacetokens>
</filterchain>
</loadfile>
<echo file="MyMacros.h" message="${theMacrosFileContents}" />
这将生成一个 MyMacros.h 文件,其中包含 SERVER_ADDRESS 的修改字符串。
我认为这不是使用 NAnt 的正确方法。我不想那样修改文件内容。我不相信这是可能的。
也许您可以为每种情况使用不同的文件,并根据输入参数指定其路径。
就个人而言,我认为不应将这样的字符串硬编码到应用程序中。如果它们要更改,最好将它们外部化到启动时读取的配置或属性文件中。这样您就可以更改它们而无需更改源或重新编译。