我可以在 Visual Studio 2012 中编译和调试(运行)单个 C++ 文件吗? (如何避免创建太多项目)

Posted

技术标签:

【中文标题】我可以在 Visual Studio 2012 中编译和调试(运行)单个 C++ 文件吗? (如何避免创建太多项目)【英文标题】:Can I compile and debug (run) a single C++ file in Visual Studio 2012? (How to avoid creating too many projects) 【发布时间】:2013-05-18 16:28:35 【问题描述】:

我正在从一本书中学习 C++ 并使用 Visual Studio 2012。为了遵循本书的练习,我需要制作多个包含 main() 函数的 .cpp 文件。 有什么方法可以编译/调试我的程序,而无需每次都创建一个新项目?

例如,如果我写一个简单的“Hello, World!”文件然后决定制作其他非常简单的东西,我可以避免为每个简单程序制作一个新项目吗?有没有办法将 Visual Studio 2012 用作编译器?如果我可以将所有内容都放在一个项目中,我可以在其中编译我想要的任何单个文件并查看它运行,我会喜欢它。

感谢您的帮助。

【问题讨论】:

【参考方案1】:

虽然添加这个答案为时已晚,但它可能对未来的观众有用。这就是我所做的 -

在试图弄清楚如何将 Visual Studio 用于您提出的相同目的时,我观察并发现对于 C++ 项目,应该只有一个起点,即只有一个 main() 函数。

因此,不要每次都创建一个新项目,只需将未使用的 C++ 文件中的 (main()) 函数的名称更改为其他名称,例如文件名或其他名称。


例如,我首先使用main() 函数创建了我的第一个程序hello_world.cpp,然后编译、运行并学习了我可以使用的所有内容它。

但现在我想创建一个新文件来尝试其他一些新事物(一个新文件 learn_operators.cpp 具有自己的 main() 函数)。

所以,在尝试编译和运行learn_operators.cpp 之前,我将在hello_world.cpp 中将main() 的名称更改为hello_world(),然后以与以前相同的方式构建和运行项目,但这次只有这个新文件会运行,因为这是项目的(新)起点(即,它包含main() 函数)。

如果我在任何地方错了,希望这能帮助并纠正我。


更新:另一种方法是使用main() 保留一个文件,为其他项目代码创建类,包括添加到项目中的任何新文件/代码,然后从main()。这样,除main() 之外的任何代码都被包裹在类中,并且每次必须调用新代码时,只有main() 中的代码会发生一些变化,而不是将函数重命名为main()

【讨论】:

【参考方案2】:

要编译,只需制作一个 cpp 文件。并使用cl 命令行工具,检查MSDN Link: Compile a Native C++ Program from the Command Line 它有一个例子cl /EHsc simple.cpp

【讨论】:

以及如何告诉它仍然保持我项目的上下文?例如。我在 GUI 项目中编写了一些数据接口,我可以在独立文件中测试它,而不是运行巨大的 GUI 应用程序吗?【参考方案3】:
    右键单击文件。 转到您不想运行的特定文件的属性。 在配置属性中,转到常规。 将“从构建中排除”设置为“是”。 单击应用。 然后加载 Windows 调试器。

你准备好了!

【讨论】:

【参考方案4】:

您也可以使用条件编译来解决这个问题。但我真的建议您努力为每个程序创建一个新项目。

header.h

#include<iostream>
#define __HelloWorld__

HelloWorld.cpp

#include"header.h"

#ifdef __HelloWorld__

int main() 
    std::cout << "Hello World" << std::endl;


#endif

program2.cpp

#include"header.h"

#ifdef __program2__

int main() 
    std::cout << "Program 2" << std::endl;


#endif

现在您可以通过#define 选择您要运行的程序。

【讨论】:

这是我第一次看到对宏的非常真实和救命的使用。【参考方案5】:

您可以将所有 cpp 文件添加到具有不同文件名的同一项目中,然后您可以右键单击每个文件并排除您不想构建的文件。

不过,每个应用程序都有一个项目要好得多。

或者,您可以有一个主文件,在您实施练习的其他文件中调用您的其他函数,然后您不必处理任何事情,只需在新文件中实施新练习并从 main 调用它。

【讨论】:

仅仅为了测试几行代码就需要创建多个文件是荒谬的。 @KyleDelaney 没错。更不用说某些库生成main() 的项目了。【参考方案6】:

如果您在右窗格的项目浏览器窗口中右键单击解决方案名称,您应该能够在现有项目下添加项目。但是,最好为每个练习开始一个新项目。 Here你有参考。

【讨论】:

【参考方案7】:

我只能找到 Visual Studio 2019 的解决方案,因此它可能不适用于 VS 2012。 您可以转到解决方案资源管理器,删除所有其他文件(只是删除,而不是删除),然后添加新文件。然后就可以编译了。

【讨论】:

以上是关于我可以在 Visual Studio 2012 中编译和调试(运行)单个 C++ 文件吗? (如何避免创建太多项目)的主要内容,如果未能解决你的问题,请参考以下文章

我可以在 Windows XP 上使用 Visual Studio 2010 远程调试器从 Visual Studio 2012 调试 .Net 4.0 应用程序吗?

我可以使用 Visual Studio 2012 安装 Visual Studio 2010 SP1 SDK 吗?

无法在 Visual Studio 2012 中编译 TypeScript 文件

我可以在 Visual Studio 2012 中编译和调试(运行)单个 C++ 文件吗? (如何避免创建太多项目)

visual studio 2012中如何查看一个工程需要哪些dll文件???

如何在 Visual Studio 2012(或 Resharper)中禁用 /* 自动完成