我必须使用Visual Studio(目前使用VS2008)构建一些C源文件,但是必须运行预构建脚本以便文件能够编译。
所以这个预构建脚本必须修改源文件,这就出现了问题:如何使用修改src文件的预构建脚本。
如果我修改原始文件并且构建失败,则后期构建将无法运行,因此我将无法恢复文件,因此我认为最好的方法是复制文件然后修改副本并告诉编译器来编译副本,但我不知道我是否可以告诉VS编译一些未包含在项目中的其他文件而不是其中包含的文件。
那么运行这样的预构建脚本的最佳方法是什么?
答案 0 :(得分:1)
您可以实现此目的的一种方法是在解决方案中创建一个仅包含空.cpp文件的虚拟项目,并将此项目设置为要修改其文件的项目的依赖项。然后我认为有几种选择如何设置:
我不确定这两个中的哪一个会根据你是否需要在每次构建时运行,或者只是在你第一次构建时运行。如果使用第二种方法,则可以将自定义生成规则的输出设置为不存在的文件,这将强制每次都执行生成规则。因为虚拟项目是主项目的依赖项,所以每次构建解决方案时都会尝试构建它。
答案 1 :(得分:0)
我不确定是否有办法操纵哪些文件在脚本中编译。但 您还可以使用预构建步骤在预处理之前创建原始文件的备份。如果构建失败,您可以从备份中恢复。
我记得曾经做过一次这样的技巧,有一个preuild步骤实际创建了一个源文件。我必须创建一次,所以我可以将它添加到项目文件中,之后我删除了它,因为它将在预构建步骤中自动生成。
编辑:我想我会创建一个额外的解决方案文件夹,其中包含源文件的'templates',并将构建操作设置为none,因此VS不会尝试编译它们。创建一个prepuild脚本,将这些文件复制到正确的位置并对其进行预处理。你可能不得不创建一些虚拟的来创建项目文件中的引用,就像我上面所说的那样。 这样,您始终可以从解决方案中访问原始文件,而prepuild步骤将为您准备文件。