likes
comments
collection
share

Code::Blocks使用帮助

作者站长头像
站长
· 阅读数 4

本文从各个角度介绍如何使用codeblocks,包含安装与汉化,用户页面介绍,项目管理的方式,调试方法,并给予了使用codeblocks的建议。

codeblocks 安装与汉化

你可以很轻松的在官网上下载codeblocks,下载好后部署好环境就可以了,接着把这个汉化包使用上就可以了。

在windows平台上codeblocks使用可能会有中文乱码,你需要把设置->编辑器->常规设置->编码设置utf8为默认编码,添加以下代码到设置--编辑器--全局编译器设置--其他编译器设置中:

-finput-charset=UTF-8

-fexec-charset=GBK

Code::Blocks使用帮助

Code::Blocks项目管理

用户页面

下图显示了 Code::Blocks 用户界面的设计。

Code::Blocks使用帮助

codeblocks页面如图所示,其中管理器和日志区域可以用快捷键shift+f2以及f2关闭和显示。

管理器(Management)

该窗口包含“项目”界面,在下文中将其称为项目视图。此视图显示特定时间在 Code::Blocks 中打开的所有项目。管理窗口的选项卡显示文件、资源文件等。该窗口可以通过shift+f2打开或关闭。

编辑窗口(Editor)

在上面的示例中,一个名为main.c的源文件在编辑器中打开,并进行了语法高亮显示。

打开文件列表(Open files list )

在编辑器中显示了所有打开的文件列表,在本例图中为:main.c。

代码片段(CodeSnippets)

通过菜单“视图”→“代码片段”,您可以打开代码片段。在这里,您可以管理文本模块、文件链接和URL链接。 日志(Logs)

此窗口用于输出搜索结果、编译器的日志消息等。该窗口可以通过f2打开或关闭。

状态栏显示目前工作的文件状态或设置状态(从左到右依次为):

Code::Blocks使用帮助

  1. 显示编辑器中已打开文件的绝对路径。
  2. 编辑器语法高亮的形式。
  3. 主机操作系统环境。
  4. 编辑器中当前光标位置(Line:显示当前光标所在行号,Col:显示当前光标所在列号,Pos:显示在光标之前有多少个字符)。
  5. 编辑器使用您所在主机操作系统的默认字符编码。此设置将以默认值显示。
  6. 当前文本插入键盘模式(插入或覆盖)的配置,你可以通过键盘insert切换两种模式,光标在插入模式下显示为竖线,在覆盖模式下显示为横线。
  7. 文件的当前状态。已修改的文件将标记为“已修改”,否则该项将为空白。
  8. 文件操作的权限。只读设置的文件将在状态栏中显示为“只读”。并且在“打开文件列表”(Open files list)窗口中,这些文件将以加锁的图标突出显示。

Code::Blocks使用帮助

说明: 在活动编辑器中,用户可以选择上下文菜单属性。 ,可以选择"文件为只读"的选项。 选择此选项将使对应文件在Code::Blocks中作为只读访问, 但是文件在文件系统上的原始读写属性不会被修改。

Code::Blocks使用帮助

  1. 如果使用命令行选项 --personality= 启动 Code::Blocks,则状态栏将显示当前使用的配置文件,否则将显示默认配置文件。 Code::Blocks的设置存储在相应的配置文件.conf中。

项目管理

Code::Blocks 提供了非常灵活和全面的项目管理。以下文本将仅讨论项目管理的一些功能。

1 项目视图

在Code::Blocks中,Project的源文件(如C/C++的源文件及其对应的头文件)和编译属性设置信息设置都保存在一个以.cbp为后缀的项目文件中。C/C++ 源代码和相应的头文件是项目的典型组件。

创建新项目的最简单方法是通过菜单栏执行命令“文件”→”新建”→“项目”并选择一个向导,并继续。

Code::Blocks使用帮助

在这之后,您可以通过管理器(Management)中的上下文菜单“添加文件”将文件添加到项目中。这个分类文件夹是虚拟的,在计算机文件系统中实际并不存在。

Code::Blocks使用帮助

Code::Blocks会根据文件扩展名划分项目文件到不同的分类中。预设的分类包括:

Sources(源代码):包含扩展名为*.c;*.cpp的源代码文件。

ASM Sources(汇编源代码):包含扩展名为*.s; .S; .ss;*.asm的源代码文件。

Headers(头文件):包含扩展名为*.h等头文件的文件。

Resources(资源):包含为wxWidgets窗口描述布局的扩展名为*.res;*.xrc等文件。这些文件类型会显示在管理栏(Management)的“资源文件”标签下。

通过菜单栏[项目–>项目→编辑文件类型和类别],用户可以新建自定义的文件类别,来调整文件类型和分类的设置。例如,如果你希望*.ld的文件放到Linkerscript的分类里,你只 需新建类别Linkerscript,并为它指定*.ld后缀即可。

Code::Blocks使用帮助

提示: 你可以通过停用 [菜单栏→项目→项目树→依据文件类型进行分类]选项,则类别显示将关闭,这样所有项目中的文件都会按照计算机原位置显示。

Code::Blocks使用帮助

2 项目备注

在CodeBlocks中,我们可以给项目添加所谓的“笔记(Notes)”。这些笔记应当包含简短的项目描述或提示信息。通过在项目打开时显示这些信息,可以使其他用户快速了解该项目情况。可以鼠标右键通过在“菜单栏(Management)→项目→属性”对话框中的“注意”选项卡进行设置,开启或关闭笔记显示。

Code::Blocks使用帮助

Code::Blocks使用帮助 3 项目模板

CodeBlocks提供了各种项目模板,在新建项目时可以选择使用。不过我们也可以自定义模板,将自己经常使用的编译器设置、优化选项、资源的配置等收录在模板中方便复用。

这些模板将被保存在如“文档与设置\用户\应用程序数据\CodeBlocks\用户模板(Documents and Settings\Application Data\codeblocks\UserTemplates)”目录下。

如果要让所有用户都能使用这些模板,需要将它们复制到CodeBlocks安装目录对应的文件夹中。重启CodeBlocks后,通过”文件”->“新建”->“项目”->“用户模板”菜单可以看到。

注:用户可以通过在“项目向导(Project Wizard)”中右键选择模板对其进行编辑修改。

Code::Blocks使用帮助

4 从构建目标创建项目

一个项目通常会有不同的版本,最常见的是Release和Debug版本。不同的构建目标所采用的编译器选项、调试信息甚至依赖文件都可能不同。每个构建目标都可以单独保存为独立的项目文件。您可以通过”菜单栏”→“项目”->“属性”对话框中的“构建目标”选项卡,选择目标后点击“从目标创建项目…”按钮实现此功能。

Code::Blocks使用帮助

5 编译模式

在Code::Blocks中,项目可以通过所谓的虚拟目标进行进一步结构化。一个常用的项目结构包括两个构建目标,一个包含调试信息的"调试"目标,另一个是没有此信息的"发布"目标。通过菜单"项目"->"属性"->"构建目标",可以添加虚拟目标来组合单独的构建目标。例如,一个名为"所有"的虚拟目标可以同时生成"调试"和"发布"目标。虚拟目标显示在编译器符号栏中的“构建目标”下。

6 构建前步骤和构建后步骤

Code::Blocks允许在编译项目前后执行额外的操作。这些操作称为预生成步骤或生成后步骤。典型的生成后步骤包括:

从完成的对象创建Intel Hex格式

通过objcopy操作对象

通过objdump生成转储文件

例子:

在Windows下从对象创建反汇编。通过/c参数调用cmd将输出导向文件。

cmd /c objdump -D name.elf > name.dis

归档项目也可以作为后生成步骤的一个例子。为此,创建名为"归档"的生成目标,并在后生成步骤中包含以下说明:

zip -j9 $(PROJECT_NAME)_$(TODAY).zip src h obj $(PROJECT_NAME).cbp

通过这个命令,当前项目及其源文件、头文件和对象将打包成zip文件。这里使用了内置变量$(PROJECT_NAME)$(TODAY),提取项目名称和当前日期。执行"归档"目标后,打包文件将存储在项目目录中。

在share/codeblocks/scripts目录下提供了一些脚本示例。可以通过菜单"设置"->"脚本设置"添加脚本并注册到菜单。例如,如果从菜单执行make_dist脚本,那么项目中的所有文件将压缩成一个<project>.tar.gz存档。

7 为构建目标添加脚本 Code::Blocks允许使用脚本来调用菜单命令,控制项目的生成。

提示: 脚本可以被包含到一个构建目标中。

8 解决方案和项目依赖

在Code::Blocks中,可以同时打开多个项目。通过菜单“文件”->“保存工作空间”可以把它们集成到一个解决方案中,生成一个对应的“<名称>.工作空间”文件。如果下次启动Code::Blocks的时候打开这个“<名称>.工作空间”文件,所有项目都将再次显示。

复杂的软件系统由不同的Code::Blocks项目中管理的组件模块组成。此外,在生成这类软件系统时,这些项目之间常常存在依赖关系。

例如:项目A通过库(library)的形式为其他项目提供一些基本函数。现在,如果修改这个项目的源代码,这个库必须重建。为了在使用这些函数的项目B和实现这些函数的项目A之间保持一致性,项目B必须依赖于项目A。项目依赖关系的必要信息被保存在相关的工作空间中,这样每个项目可以单独创建。使用依赖关系也可以控制项目生成顺序。可以通过选择菜单“项目”->“属性”,然后单击“项目的依赖”按钮来设置项目依赖关系。

Code::Blocks使用帮助

编辑与工具

本节描述编辑器设置与工具。

1 默认代码

Code::Blocks使用帮助

公司的编码规范要求源文件有标准设计。Code::Blocks可以在新建C/C++源文件和头文件时自动添加预定义内容。这个预定义内容称为默认代码。此设置可以在“设置(Settings)”->“编辑器(Editor)”->“默认代码(Default Code)”中选择。如果新建文件,那么会对变量进行宏扩展,例如通过“设置(Settings)”->“全局变量(Global variables)”菜单定义。新的文件可以通过“文件(File)”->“新建(New)”->“文件(File)”菜单新建。

2 缩写

在Code::Blocks中通过定义缩写可以节省大量输入。这可以通过选择“设置(Settings)”->“编辑器(Editor)”,然后在缩写下定义缩写,键入Ctrl-J即可调用。

Code::Blocks使用帮助

在缩写中包含变量$(NAME)也可以实现参数化。

#ifndef $(Guard token)
#define $(Guard token)
#endif // $(Guard token)

在源代码文本中输入<名称>缩写后按Ctrl-J,会请求变量内容并纳入

3 导航与搜索

在Code::Blocks中有多种快速在文件和函数之间导航的方法。设置书签是典型操作。使用快捷键Ctrl-B在源文件中设置或删除书签。使用Alt-PgUp跳转到前一个书签,Alt-PgDn跳转到下一个书签。你可以通过光标选中一个函数,右键去寻找自定义函数的声明,与书签一起结合使用。

Code::Blocks使用帮助 如果在项目视图中选择工作空间或其中的项目,可以在项目中搜索文件。从上下文菜单选择“搜索→在文件中查找(Find file)”,输入文件名后Enter就打开该文件。

4 查找文件

在Code::Blocks中可以很容易在头文件/源文件之间导航:

  1. 将光标定位到包含头文件的位置,通过上下文菜单“打开#include文件(open include file)”打开该文件
  2. 通过上下文菜单在头文件和源文件之间切换
  3. 例如在编辑器中选择一个define,从上下文菜单选择“查找声明(Find declaration)”打开包含其声明的文件。 Code::Blocks使用帮助

Code::Blocks提供多种在文件或目录中搜索的方法。通过“搜索(Search)”->“查找(Find)”(Ctrl-F)或“在文件中查找(Find in Files)”(Ctrl-Shift-F)打开查找对话框。

Alt-G和Ctrl-Alt-G也是有用快捷键。使用此快捷键打开的对话框让您选择文件/函数,然后跳转到所选函数的实现或在编辑器中打开选择的文件。您可以在对话框中使用通配符如*或?等进行增量搜索。

Code::Blocks使用帮助

6 搜索函数

笔记:使用Ctrl-PgUp可以跳转到上一个函数,Ctrl-PgDn可以跳转到下一个函数。

在编辑器中,可以通过Ctrl-Tab打开新的“打开文件”对话框,在列表中切换文件。如果按下Ctrl键,可以用不同方式选择文件:

使用左键单击选择一个条目后,该文件将打开。

按Tab键在列表中切换。释放Ctrl键将打开选择的文件。

鼠标移动到列表项上时,当前选择高亮。释放Ctrl键将打开选择的文件。

鼠标指针在高亮选择外时,可以使用鼠标滚轮在条目间切换。释放Ctrl键将打开选择的文件。

开发软件时常常会跨文件实现一组函数,通过alt+键盘左右键,可以浏览最近浏览的文件,选中后键入回车,你可以根据书签达到快速浏览的目的。

通过“设置(Settings)”->“常规设置(General Settings)”->“显示行号(Show line numbers)”可以在Code::Blocks中打开行号显示。快捷键Ctrl-G或者菜单“搜索(Search)”->“跳转行(Goto line)”可以帮您跳到目标行。

注意:如果在Code::Blocks编辑器中按下Ctrl并选择文字,鼠标右键,可以进行互联网搜索操作。

Code::Blocks使用帮助

7 符号视图

Code::Blocks Management管理窗口提供一个树形视图,用于通过函数或变量导航C/C++源文件的符号。可以设置视图范围为当前文件、项目或整个工作空间。

注意:在符号浏览器的“搜索”输入框中输入搜索词或符号名称,如果有匹配结果会显示过滤后的符号视图。(笔者电脑不支持这个功能,所以没办法展示具体功能,笔者电脑是2008年的电脑,cpu为t9550,很难想象这一台笔记本电脑已经15岁啦都没退休,换做是人的话100岁都在工作捏。)

Code::Blocks使用帮助

8 添加外部帮助文件

Code::Blocks使用帮助 Code::Blocks自带自己的帮助文件。但是开发人员通常还需要很多语言、库、协议、文件格式等方面的参考帮助。帮助插件可以通过Code::Blocks本身访问所有需要的文档。由于插件支持调用外部程序查看添加的文档,所以任何文档格式都可以整合到Code::Blocks帮助体系中。

添加新帮助文件后,“帮助(Help)”菜单中将有一个新条目打开它。

Code::Blocks支持通过菜单“设置(Settings)”->“环境(Environment)”添加外部帮助文件。

使用技巧

在接下来将会介绍codeblocks一些有用的技巧或设置

1 自定义视图

视任务需要,Code::Blocks可能需要不同配置或视图,且需要保存这些配置/视图设置。默认设置(如显示/隐藏符号栏、布局等)存储在default.conf配置文件中。启动Code::Blocks时使用--personality=ask选择不同设置。除此全局配置外,也可能需要在会话过程中在视图和符号栏之间快速切换,如编辑文件和调试项目典型情况。Code::Blocks提供存储和选择不同视角的机制,避免用户频繁手动打开关闭窗口和符号栏。保存视角选择菜单“视图(View)”->“视角(Perspectives)”->“保存当前(Save current)”并输入名称<名称>。可以在“设置(Settings)”->“编辑器(Editor)”->“键盘快捷键(Keyboard shortcuts)”->“视图(View)”->“界面外观(Perspectives)”-><名称>为此过程定义键盘快捷键。这样就可以使用热键快速切换不同视图。

Code::Blocks使用帮助

2 在项目间切换

同时打开多个项目或文件时,需要快速在项目间切换。Code::Blocks提供以下快捷键:

Alt-F5在项目视图中激活前一个项目。

Alt-F6在项目视图中激活下一个项目。

F11在编辑器中源文件<名称>.cpp和对应的头文件<名称>.h之间切换。

3 c语言标准选择

你可以为你的codeblocks选择c语言标准,在主菜单设置(Settings)->编译器(Compiler)->全局编译器设置中。进入编译器标志选中std标准,或在编译器其他设置输入[-std=c**]替换c语言标准,输入[-std=c++**]替换c++标准.

请注意两边不要同时修改编译器标志,这会导致编译器标志修改未知错误。建议取消勾选编译器标志直接在其他编译器设置中设置。

请注意codeblocks修改了标准后需全局编译器设置要重进入编译器标志选中std标准,或在编译器其他新构建空间。可以用以下代码查看是否修改成功

Code::Blocks使用帮助 c语言代码查看

#include "stdio.h"
#include "string.h"
int main()
{
    printf("%d\n", __STDC__);
    printf("%ldL",__STDC_VERSION__);
    return 0;
}

c++代码查看

#include <stdio.h>
#include <stdlib.h>

int main()
{
    printf("%ld\n",__cplusplus);
    return 0;
}

使得修改的c或c++标准宏的数据与下表一样

名字(Name)宏(Macro)标准(Standard)
C89STDCANSI X3.159-1989
C90STDCISO/IEC 9899:1990
C94STDC_VERSION = 199409LISO/IEC 9899-1:1994
c99STDC_VERSION = 199901LISO/IEC 9899:1999
c11STDC_VERSION = 201112LISO/IEC 9899:2011
c17STDC_VERSION = 201710LISO/IEC 9899:2018
C2xSTDC_VERSION = 201710L
c++98__cplusplus = 199711LISO/IEC 14882:1998
c++11__cplusplus = 201103LISO/IEC 14882:2011
c++14__cplusplus = 201402LISO/IEC 14882:2014
c++17__cplusplus = 201703LISO/IEC 14882:2017
c++/cli__cplusplus_cli = 200406LECMA-372
dsp-cISO/IEC JTC1/SC22 WG14/N854
ec++__embedded_cplusplusEmbedded C++

Code::Blocks快捷键

编辑器快捷键

功能快捷键
撤消最后操作Ctrl + Z
重做最后操作Ctrl + Shift + Z
剪切所选文本Ctrl + X
复制所选文本Ctrl + C
粘贴剪贴板文本Ctrl + V
全选文本Ctrl + A
交换头文件/源文件F11
注释高亮代码Ctrl + Shift + C
取消注释高亮代码Ctrl + Shift + X
重复当前行Ctrl + D
自动完成/缩写Ctrl + Space / Ctrl + J
显示调用提示Ctrl + Shift + Space
交换当前行与上一行Ctrl + T
添加/删除书签Ctrl + B
跳转到上一标记Alt + PgUp
跳转到下一标记Alt + PgDown
折叠/展开当前代码块F12
折叠/展开所有代码块Shift + F12

其他快捷键

功能快捷键
放大文本Ctrl + NumPad +
缩小文本Ctrl + NumPad -
恢复默认文本大小Ctrl + NumPad /
在最近打开文件间切换Ctrl + Tab
缩进代码块Tab
撤销缩进Shift + Tab
删除到单词开头Ctrl + Backspace
删除到单词结尾Ctrl + Delete
删除到行首Ctrl + Shift + Backspace
删除到行尾Ctrl + Shift + Delete

文件操作快捷键

功能快捷键
新建文件或项目Ctrl + N
打开文件或项目Ctrl + O
保存当前文件Ctrl + S
保存所有文件Ctrl + Shift + S
关闭当前文件Ctrl + F4 / Ctrl + W
关闭所有文件Ctrl + Shift + F4 / Ctrl + Shift + W

搜索快捷键

功能快捷键
查找Ctrl + F
查找下一个F3
查找上一个Shift + F3
在文件中查找Ctrl + Shift + F
替换Ctrl + R
在文件中替换Ctrl + Shift + R

编译与调试快捷键

功能快捷键
编译Ctrl + F9
编译当前文件Ctrl + Shift + F9
运行Ctrl + F10
编译并运行F9
重构Ctrl + F11
调试F8
继续调试Ctrl + F7

Code::Blocks调试介绍

在介绍调试器前,先介绍一下工具条,工具条是菜单栏的快捷方式,你可以通过鼠标右键自定义工具条,在codeblocks的调试中,使用工具条远比快捷键方便得多。在运行程序往往切换窗口,但是你的快捷键不是全局快捷键,运行程序时候你快捷键就失效了。

Code::Blocks使用帮助

我一般使用这3个工具栏进行调试:

Code::Blocks使用帮助

构建工具栏:

Code::Blocks使用帮助 请注意,在你使用构建工具栏时候,是无法使用调试功能的,因为调试器无法启用。我使用这个工具栏就是告诉自己不要一不小心按到了构建快捷键。

函数寻找工具栏:

Code::Blocks使用帮助 使用这个工具栏我可以看见我写过哪些函数,确定调试对象等。

调试之前,请设置好正确的调试器 Code::Blocks使用帮助

调试工具栏

Code::Blocks使用帮助

下面将正式介绍codeblcosk调试部分,

断点 它是使调试器有用的一个重要部分。正如它们的名字所示,它们是你可以在你的代码中声明的点,在这些点上调试器会检测这时候数据是否满足断点停止条件,如果满足将暂停运行程序。当程序暂停时,就代表调试的开始。你可以通过在codeblcosk键入f5在光标处添加断点,也可以直接点击编辑器左边数字部分添加断点。这样就可以发现一个小红点,然后请设置激活断点的条件,鼠标移动到小红点,点击右键输入条件。如果不设置将默认为无条件,只需要运行到断点处就会暂停程序。 请注意,首次在同一行键入f5或者点击数字列表是创建断电,第二次是取消断点。

Code::Blocks使用帮助 调试/继续 按钮以运行或暂停调试器,他会运行到用户定义的断点上,如果满足断点条件就停止,你会在断点处暂停,这会刷新监视值,并开始调试。 当运行到用户自定义断点上暂停时候,会出现一个黄色箭头,代表此时程序正在运行这一行的代码。

Code::Blocks使用帮助

下一行 按键,运行下一条代码。如果有一个函数调用,它将执行该函数并返回结果。你不会踏入函数内部的行,你只是直接进行并得到到函数的返回值,除非你把断点设置到这个函数内部,你会到断点处直接暂停。这张动图下面是监视器,他会监视附近变量的值,你会发现它检测不了help_debug();函数内部的数值,因为下一行不会踏入函数内部的行;

Code::Blocks使用帮助

跟进按钮 它基本功能和下一行一样,是执行下一行代码,但是它会会逐行进入函数,直到它返回,然后你会回到函数调用后的下一行。你会发现,进入函数内部后,监视会监视到这个函数内部的数值。没错,监视会随着调试执行光标的变换而更新。(如果你用了调试,但是调试不暂停,那么数字段的小箭头就会隐藏,监视等其他调试视图也不会更新)

Code::Blocks使用帮助 跟出按钮,如果你已经踏入了一个函数,你可以跳过该函数的剩余执行部分,直接进入返回值。但是当这个函数内部有一个断点时候,你会在断点处暂停,这会刷新监视值。

Code::Blocks使用帮助

下一条指令,一个printf("hello world\n");都需要点3下才会出现“hello world”的按钮,这个是比较底层和细节的,应该是配合cpu寄存器用的。太细节了,这里因为我是编程新人,不太懂计算机底层的开发,所以不加以说明。

Code::Blocks使用帮助

Code::Blocks使用帮助 跳转到指令,跳转到指令和下一条指令的关系类似于下一行指令的关系和跟出的关系,更加的细节,更加的难以说明。 停止调试器 退出调试器。

调试窗口:用来打开各种调试窗口

Code::Blocks使用帮助

感谢阅读。