在VS2010中自定义构建VC ++

时间:2012-04-17 18:07:10

标签: visual-studio visual-studio-2010 visual-c++ build msbuild

我有一个很大的C ++项目,我需要在构建阶段做很多步骤,因为我正在构建一个兼容64和32的应用程序,我有三个项目: proj1,Porj2,Proj3

我需要做以下事情:

  1. 从proj1(32位版本)

  2. 中排除cpp文件
  3. 将cpp文件包含到proj1(64位版本)

  4. 构建proj1

  5. build proj2

  6. 执行proj2的输出

  7. 从proj3(32位版本)

  8. 中排除cpp文件
  9. 将cpp文件包含到proj3(64位版本)

  10. 构建proj3

  11. 重命名从proj3构建的exe

  12. 从proj1(64位版本)

  13. 中排除cpp文件
  14. 将cpp文件包含到proj1(32位版本)

  15. 还有其他一些步骤......我手动这样做而且令人沮丧,我发现我需要使用MSBUILD,但它是否用于构建本机代码?我怎样才能完成这些任务?

    - 将cpp文件排除并包含在项目中

    -Building proj

1 个答案:

答案 0 :(得分:2)

在Visual Studio 2010及更高版本中,C ++项目使用MSBuild。


不是根据配置排除或包含文件,而是使用预处理程序指令有条件地编译文件的内容会更简单。例如,将文件的全部内容包装在:

#ifdef MY_32BIT_BUILD_MACRO
// Source file contents here
#endif

同样使用64位构建的宏。使用Visual C ++时,您可以使用_M_IX86_M_X64预定义宏来检测您是分别编译x86还是x64。

或者,您可以在项目文件中为特定源文件的Condition项添加ClCompile属性,并在设置某些属性时将其仅包含在构建中。我认为源文件中的条件编译是一个更好的选择,除非你有复杂的规则需要用来确定是否包含文件。


在您的解决方案中,您可以设置项目依赖项以确保在另一个项目之前构建一个项目。右键单击解决方案,选择“属性”,然后浏览到“公共属性” - >项目依赖性。也可以在项目文件中指定依赖关系。

您可以使用构建后任务来执行构建的输出。右键单击项目,选择“属性”,然后浏览到“配置属性” - >建立活动。 Post-Build事件可用于在构建完成时执行命令。


不是在构建之后重命名可执行文件,而是让构建生成具有正确名称的可执行文件更容易。在项目属性中,在配置属性 - >下;一般情况下,Target Name属性可用于设置主构建输出的名称。