Visual Studio 2010使用批处理文件自定义编译

zzz*_*zzz 9 visual-studio-2010 visual-c++-2010

我最近将一个中型Visual Studio 2005解决方案转换为Visual Studio 2010.其中一个项目包含的文件不是C/C++文件,而是使用运行自定义构建工具的批处理文件进行编译.自定义生成步骤的输出是一些C++文件,必须在此之后编译.

相关文件的属性中的自定义生成步骤的输出正确设置为生成的C++文件.

问题是,有时VS2010尝试在使用自定义构建步骤的文件之前编译生成的C++文件,这意味着在干净的构建中它无法找到C++文件并失败.如果我最终尝试构建几次,它将编译自定义文件,然后构建将成功,但这显然不是自动构建的好解决方案.

在VS2005中,构建此项目没有问题,但VS2010无法从自定义构建步骤的输出中确定正确的编译顺序.还有另一种方法可以在VS2010中强制执行正确的编译顺序吗?

Han*_*ant 3

Visual Studio 支持并行构建,它可以同时构建多个项目。如果无法正确查看项目之间的依赖关系,这将无法正常工作。自定义构建肯定会在这里带来麻烦。并行构建的数量是可配置的,将其设置为 1 将是一个非常粗略但有效的解决方法。工具+选项、项目和解决方案、构建和运行、“并行项目构建的最大数量”设置。

但不要这样做,并行构建可以节省大量时间。您可以通过显式设置项目依赖项来解决此类问题。在“解决方案资源管理器”窗口中右键单击使用生成的 C++ 文件的项目,然后单击“项目依赖项”。勾选生成 C++ 文件的项目的复选框。如果它与其他读者相关,请检查此答案,了解创建仅执行自定义构建步骤而不执行其他操作的项目的方法。