2012-04-17 43 views
0

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

,我需要做到以下几点:

  1. 从proj1排除一段cpp的文件(32位版本)

  2. 包含一个CPP文件proj1(64位版本)

  3. 构建proj1

  4. 构建proj2

  5. 执行proj2

  6. 的输出排除从proj3一段cpp的文件(32位版本)

  7. 包含一个CPP文件proj3(64位版本)

  8. Build proj3

  9. 重命名从proj3

  10. 内置的exe排除从proj1一段cpp的文件(64位版本)

  11. 包含一个CPP文件proj1(32位版本)

仍然存在是一些其他的步骤...我手动和令人沮丧的,我发现我需要使用MSBUILD,但它是用于构建本机代码?我该如何执行这些任务?

-Excluding和包括cpp文件到项目中

- 建材凸出

+0

是的,本机代码也使用MSBuild。我无法理解你的问题的其余部分。 – 2012-04-17 18:08:58

+0

@CodyGray我怎样才能包括和排除使用MSBUILD cpp文件,并选择建立不同的平台,因为我的一些cpp文件是32和其他为64兼容性问题 – CnativeFreak 2012-04-17 18:11:00

回答

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项目,并且只有在设置了某些属性时才将其包含在构建中。尽管如此,我认为源文件中的条件编译是一个更好的选择,除非您有复杂的规则需要用来确定是否包含文件。


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

您可以通过使用后构建任务来执行构建的输出。右键单击该项目,选择属性,然后浏览到配置属性 - >生成事件。构建完成后,可以使用构建后事件来执行命令。


与构建后重命名可执行文件相比,使构建产生具有正确名称的可执行文件更简单。在“项目”属性的“配置属性” - >“常规”下,可以使用“目标名称”属性设置主要生成输出的名称。

+0

我怎样才能使它建立64版本,然后建立32自动版本?没有我改变平台?没有我改变平台的 – CnativeFreak 2012-04-17 18:18:34

+0

? – CnativeFreak 2012-04-17 18:21:27

+0

感谢您的评论,您让我的生活更轻松。现在我只需要改变平台并编译,你几乎总结了12步到2步..很感谢! – CnativeFreak 2012-04-17 18:26:23