Code::Blocks 控制台应用程序创建指南
官方链接(英文):Creating a new project - Code::Blocks
本文简介如何使用 Code::Blocks IDE 创建和管理 C++ 控制台应用程序项目。
文章目录
项目向导(Project Wizard)
通过 File->New->Project… 启动项目向导(Project Wizard)来创建新项目。这里有许多预配置的模板,适用于各种类型的项目,还包括创建自定义模板的选项。选择 Console application(控制台应用程序),这是最常用的通用类型,然后点击 Go。

注意:如果图标下方显示的是红色文字而非黑色文字,表示该向导使用了自定义的向导脚本(wizard script)。
接下来会出现控制台应用程序向导。按照菜单提示继续操作,当提示选择语言时选择 C++。在下一个界面中,为项目命名并输入或选择目标文件夹。如下图所示,Code::Blocks 会根据这两个信息自动生成其余条目。

最后,向导会询问此项目是否使用默认编译器(通常是 GCC)以及两个默认构建目标(build targets):Debug 和 Release。这些设置都可以保持默认。点击完成,项目将被生成。主窗口可能会变成灰色,但这不是问题,只需打开源文件即可。在左侧 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… 打开文件浏览器。在这里您可以选择一个或多个文件(使用 Ctrl 和 Shift 的组合)。(选项 Project->Add files recursively… 会搜索给定文件夹的所有子目录,选择相关文件进行包含。)选择 hello.h,点击 Open,会出现一个对话框询问文件应该属于哪些构建目标。在这个示例中,选择两个目标。

注意:如果当前项目只有一个构建目标,此对话框将被跳过。
返回主源文件(main.cpp),包含头文件并替换 cout 函数以匹配项目的新设置。
main.cpp
#include "hello.h"
int main()
{
hello();
return 0;
}
按 Ctrl-F9、Build->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。

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

打开 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: 指的是当选择 Run 或 Build and run 时程序执行的位置。默认设置 “.” 就可以(它指的是项目目录)。Objects output dir: 需要更改为 “obj\ReleaseSmall”(Windows)或 “obj/ReleaseSmall/”(Linux)以便与项目的其余部分保持一致。Build target files: 目前没有选择任何内容。这是个问题,因为如果构建此目标,将不会编译任何内容。勾选所有复选框。

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

现在可以从 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)
172

被折叠的 条评论
为什么被折叠?



