Visual Studio:如何创建一个可以编译2个exe文件的项目?

时间:2011-01-23 17:23:05

标签: c++ visual-studio visual-studio-2008 executable

所以我有main.cpp和main2.cpp,每个都有int main。我希望得到2个exes。是否可能以及创建此类项目的指示是什么?

6 个答案:

答案 0 :(得分:26)

不,Visual Studio的项目模型是围绕“一个项目生成一个输出”的假设而严格建立的。

如果您需要两个可执行文件,则必须创建两个项目。您可以将它们保存在同一个解决方案中,以使自己更容易,但它们必须是单独的项目。

修改
好吧,正如其他答案所指出的那样,如果你绝望的话,它当然可以完成。您可以添加自定义构建步骤,执行您喜欢的任何操作,包括构建另一个可执行文件。 (但是,构建系统不会理解该文件应该被视为项目输出,因此某些方案可能会失败:例如,文件不会自动复制到输出文件夹,并且在重建之前检查依赖项时,它可能无法理解要检查的文件以及重建的内容(或如何)。)

Visual Studio(至少到2008年,不确定2010年)也允许使用nmake文件,但我认为你正在扩展“Visual Studio项目”的定义。

但在“正常”情况下,一个项目意味着一个输出。为了获得两个可执行文件,您通常会创建两个项目。

答案 1 :(得分:15)

您需要一个解决方案,其中包含两个项目。阅读有关解决方案和项目的Visual Studio文档。

答案 2 :(得分:6)

这是我的解决方案,因为Google搜索中没有人似乎建议使用此方法。它非常简单,我已经在其他IDE(如Code :: Blocks)中使用/看过它。

在项目中,为每个所需的输出创建配置。然后,每个配置中只包含一个main源文件。

在VS中,这意味着对于每个包含main的源文件:右键单击 - >属性 - >从Build = Yes中排除。因此,一旦完成,每个配置只会构建一个main源。然后,您可以在“项目属性”中为每个配置指定不同的输出。我在VS 2010上做过这个,但它可能适用于其他版本。

我使用这种方法,这样我就可以为一个项目进行多次测试,而不会使测试项目比实际代码项目更加混乱。

答案 3 :(得分:3)

我不知道是否可以这样做,但是你做的唯一改变就是自定义构建步骤

编辑:由于有人对此进行了评价,我做了一个虚拟配置测试。

自定义构建步骤中,我将两个Link-cmds(从原始链接-cmdline复制并稍作修改)作为输入 main1.obj resp。 main2.obj 并输出 App1.exe 。的 App2.exe 即可。 它在编译之后和链接之前执行。

工作

缺点是我无法阻止(还)链接orinal exe(重复主函数的错误)。 解决方法可能是让一个lib项目从构建中排除main()的源,并在custum-step中构建它们。

所以问题的答案应该是:是的,可以做到!

答案 4 :(得分:0)

在单个visual studio项目中不能有多个main()函数。所以你不能编译2个可执行文件,唯一的办法是在同一个解决方案中制作两个不同的项目

答案 5 :(得分:0)

您可以为所需的每个输出创建一个包含两个项目的解决方案。然后转到Build菜单并选择Batch Build ..并选择两个项目。 如果您希望两个exe文件位于一个位置,则可以指定自定义的构建后操作: 对于这两个项目: 查看项目属性页面,在Build事件中选择Post-Build事件,然后在命令行字段中输入将输出复制到所需位置的命令,如: 复制$(TargetPath)c:\ yourlocation / Y. 然后在构建解决方案后,输出文件将被复制到该位置。