我有一个依赖7zip的sfx的解决方案。出于对整个解决方案(加上sfx)进行管理和协调的愿望,我想创建一个新项目来容纳sfx使用的所有源文件,在构建时,执行命令行告诉7zip从源文件构建sfx,并将其放入输出中,以便同一解决方案中的实际Visual Studio项目可以引用它。
我想我可以通过使用Build事件和提供适当的宏来绘制命令行,以确保7zip的输出被放置到具有适当名称的目标文件夹中,这样它就可以被其他VS项目正确引用。但我不确定的是,我需要使用什么Visual Studio项目,或者采取什么步骤来告诉Visual Studio,这个项目中不会有任何代码需要编译,它只需要执行我给它的这个脚本。
我能想到的最接近的东西是VS的Make项目,但我不知道这是否正确,因为这与Make无关。
那么,我需要使用的VisualStudio项目模板是什么呢?如果为空,那么我需要执行什么配置,这样它就不会试图寻找一些要编译的代码文件,而只是作为解决方案构建的一部分执行脚本?
目前看来,使用C++Makefile Project是可行的。我不得不做一些配置:
1) 我不得不将项目的"配置类型"指定为"实用程序"2) 我使用了Pre-Build事件,并提供了一个命令来调用项目中包含的批处理文件。然后批处理文件处理所有内容。3) 通常,在确定是否需要构建或是否已经是最新版本时,不考虑使用非C++文件。为了确保在编辑批处理文件或其他关键文件时执行新的构建,我将文件的"文件类型"设置为"MakeFile"。即使它实际上不是一个Make文件,它也可以确保对该文件所做的任何编辑都会导致新的生成。
到目前为止,我发现的缺点是:
1) C++使用"过滤器",而不是文件夹。因此,将文件保持在相同的目录结构中是一个很大的PITA。可以"包含"文件,并在"过滤器"和磁盘上的实际目录结构之间获得一对一的映射,但这既烦人又乏味。希望它是一个C#项目
2) 我有点担心它将如何检测新文件或我没有明确设置为"MakeFile"的文件的其他更改。我希望源代码是稳定的,但我担心当我意识到我需要一个新文件并添加它时,我可能会忘记并没有注意到构建没有正确地包含新文件。
我不确定这是否是最好的方法,但这符合我的目的——让一个项目作为更大构建过程的一部分来管理外部工具。