我可以在 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++ 文件吗? (如何避免创建太多项目)的主要内容,如果未能解决你的问题,请参考以下文章