Code::Blocks中单个项目中有多个主C++文件吗?

4
我不经常编写代码。有时我会连续写6个月的代码,然后可能会有长达2年的时间不写代码。这种方法迫使我保留一堆我(和其他更好的程序员)编写的参考代码。当我长时间不写代码后,我会查看这个"库",阅读它,执行它,这对我来说是一个巨大的帮助。在过去的5年中,这个系统在Eclipse和Java方面为我服务得非常好。
我现在正在学习C++,并使用Code::Blocks。我想将许多具有主要方法的C++文件放入单个Code::Blocks项目中。如果有必要的话,我愿意重写代码来实现这个任务(如果合理的话...)
我不是第一个寻找这个问题有意义答案的人:https://stackoverflow.com/questions/35917504/how-can-i-make-multiple-programs-in-a-single-project-in-codeblockshttps://www.reddit.com/r/learnprogramming/comments/3opp5r/how_to_run_multiple_cpp_files_separately_in_same/ 我不想改变IDE或与其他IDE进行比较。我想要的是能够快速轻松地执行数百个良好组织且可扩展的C::B文件树中的小程序之一。如果我将每个具有主函数的C++文件放在自己的项目中,我将拥有如此多的C::B项目,这是不合理的。
我确实了解到,C::B不是Eclipse,C++也不是Java,而且C::B旨在每个项目只有单个带有主函数的c++文件。
任何答案,即使是非常创造性的答案,都将非常感激!脚本、设置、如何重写我的代码,无论您有什么建议,我都很想听听,以便我可以考虑它。
为了公开透明,目前我将所有的小程序保存在目录中,并使用操作系统遍历目录,然后双击C::B打开的.cpp文件。我愿意大幅修改我的代码,以实现这个目标。
谢谢您的时间。

你得到了更好的答案吗?我也有同样的问题。 - pio
1
@pio 我最终将所有的代码按目录进行了排序 - 每个目录包含相关的源文件。当我想运行特定的 .cpp 和 .h 文件时,我会从工作区中删除所有当前文件,并放入我想要使用的文件。这个系统提供了我想要的组织方式,允许通过 CodeBlocks 进行编码,并克服了在所有源文件之间只有一个主方法的限制。 - Mike
但是每次想要运行时仍然需要删除文件,这让人感到头疼。在我的看来,应该有一种方法可以通过代码块管理器直接运行特定的主函数。 - pio
4个回答

6
要在有多个main()文件的Code::Blocks项目中编译和运行单个文件,请按照以下步骤操作:
  1. 在左侧的“Projects”选项卡上,右键单击您不想编译的文件。

  2. 在弹出的菜单中,指向Options,并取消选中Compile fileLink file两个选项。

  3. 必须对您不想编译的所有文件执行此操作。

  4. 现在,在使用F9构建和运行项目时,只会编译所需的文件;其他文件将被忽略。

注意:没有必要在Code::Blocks中创建项目来编译和运行单个文件。要编译和运行单个文件(而不创建项目):
  1. 只需点击File -> Empty -> New file

  2. 将文件以.cpp扩展名保存在任何位置(不要在项目中保存)。

  3. 要编译和运行该文件,只需按下F9或选择Build -> Build and run

  4. 但是,这样的文件(没有项目)无法进行调试。最合适的做法就是创建一个具有多个main()文件的项目,如本答案早期部分所述。


3

我之前学过Java,现在开始学习C++。使用Code::Blocks作为我的主要C++ IDE时,我遇到了和你一样的问题。虽然在互联网上找不到有用的信息,但我还是设法自己解决了这个问题。以下是我的解决方案。

  1. 在你的 管理 面板中,找到你当前的项目并右键单击,选择 关闭项目。(我们不会使用项目来管理我们的代码)。
  2. 仍然在 管理 面板中,找到 文件 选项卡,导航到你的工作目录,在其上右键单击并选择 设置为根目录

至此,我们完成了!

当你想添加一个新的代码文件时,右键单击你的文件夹并选择 新建文件...,输入你的文件名并加上 .cpp 扩展名。然后你可以像以前一样使用C::B。没有了项目的限制,C::B将只编译你当前的C++文件并在其自身上运行它。键盘快捷键 F9运行和构建 按钮仍然有效。

唯一的缺点是你会在文件列表中看到 .exe.o 文件,这有点不整洁。我还在尝试找到如何在列表中隐藏它们。

希望这能对你有所帮助。


感谢您的建议。事实上,我已经在我的数据分析课程中使用了Python,并计划将Go作为我的下一个学习目标。我学习C++的原因只是出于纯粹的好奇心。 - Nekonull
JerryLu @RannLifshitz,我在管理窗口中没有看到“文件”选项卡。有可能在SDK版本2.6.0中已经被移除了吗? - Yasser Hussain

2
如何使用预编译器?您可以在每个main周围加上:
#ifdef EXECUTE_EXAMPLE_1
int main() { return 0; } // example of one of the "mains" in one cpp
#endif

#ifdef EXECUTE_EXAMPLE_2
int main() { return 0; } // another "main" in an other cpp
#endif

#ifdef EXECUTE_EXAMPLE_3
int main() { return 0; } // yet another "main" somewhere else
#endif

创建一个头文件,由所有“主程序”包含,在其中您可以定义要运行的一个:

#ifndef _EXECUTION_HEADER_H_
#define _EXECUTION_HEADER_H_

// Uncomment one and only one
#define EXECUTE_EXAMPLE_1
//#define EXECUTE_EXAMPLE_2
//#define EXECUTE_EXAMPLE_3

#endif // _EXECUTION_HEADER_H_

这可能是一个适用于您用例的快速而简单的“构建系统”。

0

我认为这就是他们想要实现的目标。 不,你不能在同一个项目中有两个主文件,但是你可以将许多较小的项目程序保存到一个工作区中,这样可以使你分别运行和测试它们。

https://www.youtube.com/watch?v=cHGIIp3rGO8


尽管YouTube视频可能有所帮助,但它并不能替代完整的答案。如果您查看其他答案,您将会知道期望的答案是什么样子的。YouTube视频只是可选的补充。 - Tarick Welling

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接