我有一个很大的C ++项目,我需要在构建阶段做很多步骤,因为我正在构建一个兼容64和32的应用程序,我有三个项目: proj1,Porj2,Proj3
我需要做以下事情:
从proj1(32位版本)
将cpp文件包含到proj1(64位版本)
构建proj1
build proj2
执行proj2的输出
从proj3(32位版本)
将cpp文件包含到proj3(64位版本)
构建proj3
重命名从proj3构建的exe
从proj1(64位版本)
将cpp文件包含到proj1(32位版本)
还有其他一些步骤......我手动这样做而且令人沮丧,我发现我需要使用MSBUILD,但它是否用于构建本机代码?我怎样才能完成这些任务?
- 将cpp文件排除并包含在项目中
-Building proj
答案 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属性可用于设置主构建输出的名称。