CodeBlocks控制台应用程序创建指南

Code::Blocks 控制台应用程序创建指南

官方链接(英文):Creating a new project - Code::Blocks

本文简介如何使用 Code::Blocks IDE 创建和管理 C++ 控制台应用程序项目。


项目向导(Project Wizard)

通过 File->New->Project… 启动项目向导(Project Wizard)来创建新项目。这里有许多预配置的模板,适用于各种类型的项目,还包括创建自定义模板的选项。选择 Console application(控制台应用程序),这是最常用的通用类型,然后点击 Go

ProjectWizard

注意:如果图标下方显示的是红色文字而非黑色文字,表示该向导使用了自定义的向导脚本(wizard script)

接下来会出现控制台应用程序向导。按照菜单提示继续操作,当提示选择语言时选择 C++。在下一个界面中,为项目命名并输入或选择目标文件夹。如下图所示,Code::Blocks 会根据这两个信息自动生成其余条目。

最后,向导会询问此项目是否使用默认编译器(通常是 GCC)以及两个默认构建目标(build targets):DebugRelease。这些设置都可以保持默认。点击完成,项目将被生成。主窗口可能会变成灰色,但这不是问题,只需打开源文件即可。在左侧 Management 面板的 Projects 选项卡中,展开文件夹并双击源文件 main.cpp 在编辑器中打开它。

该文件包含以下标准代码。

main.cpp

#include <iostream>

using namespace std;

int main()
{
    cout << "Hello world!" << endl;
    return 0;
}

更改文件组成

单个源文件在任何有实际复杂度的程序中用处不大。为了解决这个问题,Code::Blocks 提供了几种非常简单的方法来向项目添加额外的文件。

添加空白文件

在这个示例中,我们将把以下函数

main.cpp

cout << "Hello world!" << endl;

拆分到单独的文件中。

注意:创建如此小的函数通常是不良的编程风格;这里这样做只是为了提供一个简单的示例。

要向项目添加新文件,可以通过 File->New->File…Main Toolbar->New file (button)->File… 打开文件模板向导。

选择 C/C++ source 并点击 Go。接下来的对话框与创建项目时非常相似,当提示选择语言时选择 C++。在最后一页,您将看到几个选项。第一个框将确定新文件名和位置(如提示所示,需要完整路径)。您可以选择使用 按钮打开文件浏览器窗口来选择文件保存位置。勾选 Add file to active project 将把文件名存储在 Management 面板 Projects 选项卡的 Sources 文件夹中。勾选任何构建目标(build target)将通知 Code::Blocks 该文件应该被编译并链接到所选的目标中。这在某些情况下很有用,例如,如果文件包含调试专用代码,它允许将文件包含(或排除)在适当的构建目标中。但是,在这个示例中,hello 函数非常关键,每个目标都需要它,所以勾选所有复选框并点击 Finish 生成文件。

新创建的文件应该会自动打开;如果没有自动打开,可以在 Management 面板的 Projects 选项卡中双击该文件打开它。现在添加 main.cpp 将调用的函数代码。

hello.cpp

#include <iostream>

using namespace std;

void hello()
{
    cout << "Hello world!" << endl;
}

添加已有文件

现在 hello() 函数已经在单独的文件中,必须声明该函数以便 main.cpp 使用。启动一个纯文本编辑器(例如 Notepad 或 Gedit),添加以下代码。

hello.h

#ifndef HELLO_H_INCLUDED
#define HELLO_H_INCLUDED

void hello();

#endif // HELLO_H_INCLUDED

将此文件作为头文件(hello.h)保存在项目中其他源文件所在的同一目录中。回到 Code::Blocks,点击 Project->Add files… 打开文件浏览器。在这里您可以选择一个或多个文件(使用 CtrlShift 的组合)。(选项 Project->Add files recursively… 会搜索给定文件夹的所有子目录,选择相关文件进行包含。)选择 hello.h,点击 Open,会出现一个对话框询问文件应该属于哪些构建目标。在这个示例中,选择两个目标。

media/image6.png

注意:如果当前项目只有一个构建目标,此对话框将被跳过。

返回主源文件(main.cpp),包含头文件并替换 cout 函数以匹配项目的新设置。

main.cpp

#include "hello.h"

int main()
{
    hello();
    return 0;
}

Ctrl-F9Build->Build 或点击 Compiler Toolbar->Build(齿轮按钮) 来编译项目。如果在构建日志(底部面板)中生成以下输出,则说明所有步骤都正确执行了。

-------------- Build: Debug in HelloWorld ---------------

Compiling: main.cpp
Compiling: hello.cpp
Linking console executable: bin\Debug\HelloWorld.exe
Output size is 923.25 KB
Process terminated with status 0 (0 minutes, 0 seconds)
0 errors, 0 warnings (0 minutes, 0 seconds)

现在可以通过点击 Run 按钮或按 Ctrl-F10 来运行可执行文件。

注意:选项 F9(用于构建并运行)组合了这些命令,在某些情况下可能更有用。

有关编译过程中幕后发生的事情,请参阅 Code::Blocks 的构建过程(the build process of Code::Blocks)

移除文件

使用上述步骤,向项目添加一个新的 C++ 源文件 useless.cpp。从项目中移除这个不需要的文件很简单。只需在 Management 面板的 Projects 选项卡中右键点击 useless.cpp,然后选择 Remove file from project

media/image7.png

注意:从项目中移除文件不会物理删除它;Code::Blocks 只是从项目管理中移除它。

修改构建选项(Build Options)

构建目标(build targets)已经出现过几次了。在两个默认生成的目标——DebugRelease——之间切换,可以通过 Compiler Toolbar 上的下拉列表完成。每个目标都可以是不同的类型(例如:静态库、控制台应用程序),包含不同的源文件集、自定义变量、不同的构建标志(build flags)(例如:调试符号 -g;大小优化 -Os;链接时优化 -flto),以及许多其他选项。

media/image8.png

打开 Project->Properties… 访问当前项目 HelloWorld 的主要属性。第一个选项卡 Project settings 上的大多数设置很少需要更改。Title: 允许更改项目名称。如果 Platforms: 更改为默认值 All 以外的选项,Code::Blocks 将只允许在选定的目标上构建项目。这在某些情况下很有用,例如,如果源代码包含 Windows API,那么在 Windows 以外的任何地方都是无效的(或其他任何操作系统特定的情况)。Makefile: 选项仅在项目应使用 makefile 而非 Code::Blocks 内部构建系统时使用(有关更多详细信息,请参阅 Code::Blocks and Makefiles)。

添加新的构建目标(Build Target)

切换到 Build targets 选项卡。点击 Add 创建新的构建目标并将其命名为 Release Small。左侧列中的高亮应该会自动切换到新目标(如果没有,点击它以更改焦点)。由于 Type: 的默认设置——“GUI application”——对于 HelloWorld 程序不正确,请通过下拉列表将其更改为 “Console application”。输出文件名 HelloWorld.exe 没问题,只是它会导致可执行文件输出到主目录。在它前面添加路径 “bin\ReleaseSmall”(Windows)或 “bin/ReleaseSmall/”(Linux)来更改目录(这是从项目根目录开始的相对路径)。Execution working dir: 指的是当选择 RunBuild and run 时程序执行的位置。默认设置 “.” 就可以(它指的是项目目录)。Objects output dir: 需要更改为 “obj\ReleaseSmall”(Windows)或 “obj/ReleaseSmall/”(Linux)以便与项目的其余部分保持一致。Build target files: 目前没有选择任何内容。这是个问题,因为如果构建此目标,将不会编译任何内容。勾选所有复选框。

media/image9.png

下一步是更改目标的设置。点击 Build options… 访问设置。出现的第一个选项卡有一系列可通过复选框访问的编译器标志(compiler flags)。选择 “Strip all symbols from binary” 和 “Optimize generated code for size”。这里的标志包含许多较常见的选项,但是,也可以传递自定义参数。切换到 Other options 子选项卡并添加以下开关。

-fno-rtti
-fno-exceptions
-ffunction-sections
-fdata-sections
-flto

现在切换到 Linker settings 选项卡。Link libraries: 框提供了一个添加各种库的位置(例如,wxmsw28u 用于 wxWidgets 单体 DLL 的 Windows Unicode 版本)。此程序不需要任何此类库。上一步的自定义开关需要其链接时对应的设置。将以下内容添加到 Other linker options: 选项卡。

-flto
-Os
-Wl,--gc-sections
-shared-libgcc
-shared-libstdc++

(有关这些开关的更多详细信息,请参阅 GCC 文档中的优化选项(optimization options)链接器选项(linker options)。)

虚拟目标(Virtual Targets)

点击 OK 接受这些更改并返回上一个对话框。现在有两个发布构建,需要分别运行 BuildBuild and run 两次才能编译两者。幸运的是,Code::Blocks 提供了将多个构建链接在一起的选项。点击 Virtual targets…,然后点击 Add。将虚拟目标命名为 Releases 并点击 OK。在右侧的 Build targets contained 框中,选择 ReleaseRelease small。关闭此框并在主窗口上点击 OK

media/image9.png

现在可以从 Compiler Toolbar 使用虚拟目标 Releases;构建它应该产生以下输出。

-------------- Build: Release in HelloWorld ---------------

Compiling: main.cpp
Compiling: hello.cpp
Linking console executable: bin\Release\HelloWorld.exe
Output size is 457.50 KB

-------------- Build: Release Small in HelloWorld ---------------

Compiling: main.cpp
Compiling: hello.cpp
Linking console executable: bin\ReleaseSmall\HelloWorld.exe
Output size is 8.00 KB
Process terminated with status 0 (0 minutes, 1 seconds)
0 errors, 0 warnings (0 minutes, 1 seconds)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值