【笔记】Code::Blocks

巧了我就是萌 提交于 2019-12-03 23:00:54

Code::Blocks

1) Windows上安装与编译

1.1) 安装C::B

已有MinGW的下载codeblocks-?.?-setup.exe即可,还没有的推荐直接下载codeblocks-?.?mingw-setup.exe

1.2) 配置MinGW

添加环境变量:

Path += %MinGW%\bin;%MinGW%\mingw32\bin;

MinGW之后编译Code::Blocks要用。

At the present time, Code::Blocks only compiles successfully with the MinGW compiler (or any other gcc for that matter).

1.3) 编译wxWidgets

svn: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk

mingw32-make -f makefile.gcc SHARED=1 MONOLITHIC=1 BUILD=release UNICODE=1

编译详见参考2,过程会比较久。可以直接下载预编译好的,在这儿

For Windows, we also provide the pre-compiled wxWidgets, ...

自己编译的话,就直接上wxWidgets3.0,参考5.1。

1.4) 编译Code::Blocks

svn: svn://svn.code.sf.net/p/codeblocks/code/trunk

假设:

D:\codeblocks  # Code::Blocks源码目录
D:\wxMSW-2.8.12  # 预编译wxWidgets解压目录
  1. 打开Code::Blocks,然后"File > Open...: D:\codeblocks\src\CodeBlocks.cbp"。
  2. 在弹出"Global Variable Editor"内(可由"Settings > Global variables..."打开):
    • Current Set: default, Current Variable: wx: Built-in fields > base: D:\wxMSW-2.8.12
    • Current Set: default, Current Variable: cb_release_type: Built-in fields > base: -o2
  3. 设置MinGW编译,"Settings > Compiler...":
    • Selected compiler: GNU GCC Compiler > Toolchain executables: [MinGW]\bin
  4. 工具栏 > Build Target: Compiler,然后Build。(Error: cannot find -lcodeblocks|-ldepslib)
  5. Build All吧,-lcodeblocks(Target sdk)往上依赖很多。
  6. 需要zip.exe,列在了tools page。下载并加到Path。(Execution of zip ... failed.)
    • zip建议直接下载zip-?.?-setup.exe安装。如果只是bin的话,还依赖bzip2
  7. 如果要显示SVN修订号,则需要svn.exe,这儿下载。否则为0。

注意:3视情况,456不用依步骤,7随意。

然后:

  1. 拷贝"D:\wxMSW-2.8.12\lib\gcc_dll\wxmsw28u_gcc_cb.dll"到"D:\codeblocks\src\devel"目录。
  2. 运行"D:\codeblocks\src\update.bat",目录"D:\codeblocks\src\output"下就是你的发行版了。
  3. 运行"D:\codeblocks\src\output\codeblocks.exe"时,由于单例,记得关闭开着的C::B。

可以卸载原先安装的C::B,用"output"下的迭代编译自身。

1.5) 参考

  1. Retrieve source code from SVN
  2. Installing Code::Blocks from source on Windows
  3. windows 环境下编译 Code::Blocks

2) 基本配置

Settings
  -> Editor...
    -> General settings
      -> Editor settings
        -> Font > Choose
          -> F = YaHei Consolas Hybrid  # 等宽字体
        -> TAB options
          -> TAB size in spaces = 4  # TAB为4个空格
        -> End-of-line options
          -> End-of-line mode = AUTO  # 自动。
             # 想选UNIX换行符LF,但现在换行符都由版本控制系统根据平台自动做转换了。
        -> Other options
          -> Highlight line under caret  # 高亮光标所在行
      -> Other settings
        -> Encoding
          -> Use encoding when opening files = UTF-8  # 打开文件默认编码
          -> Use this encoding: As default encoding  # 默认编码
        -> Other options
          -> Show spaces in editor = Always  # 总显示空格
    -> Margins and caret
      -> Right margin
        -> Right margin hint = Visible line  # 右边界线可见
Edit
  -> File Encoding  # 选择文件编码

新建Console application,由于Windows下Command Prompt不支持UTF-8,如果输出中文会是乱码。用的GCC编译器的话,可以设置-fexec-charset=GBK,即执行时字符集为GBK。更多选项

Settings
  -> Compiler...
    -> Selected compiler = GNU GCC Compiler
      -> Compiler settings
        -> Other options: -fexec-charset=GBK

需要Rebuild后再Run。

3) 进行调试

3.1) Hello World

  1. 与"-fexec-charset=GBK"一样的步骤,添加"-std=c++11"以使用新特性。
  2. File > New > Project... > Console application,依步骤建立个Hello World工程。
  3. main.cpp稍改复杂些,以试单步调试,如下:

main.cpp

#include <iostream>
#include <string>
#include <vector>

template<typename T>
std::ostream& operator<<(std::ostream& os, const std::vector<T>& vec)
{
    for (auto& el : vec)
    {
        os << el << ' ';
    }
    return os;
}

int main()
{
    std::vector<std::string> words = {
        "Hello", "from", "GCC", __VERSION__, "!"
    };
    std::cout << words << std::endl;
}

3.2) 进行Debug

  1. Settings > Debugger... > GDB/CDB Debugger > Default > Executable path,设Debugger程序。
  2. 在第8行"for (auto& el : vec)"打断点,然后Debug运行即可。
  3. Debug时,Debugger > Debugging windows或工具栏,可添加Debug窗口。Layout会被记录。

3.3) 参考

4) 常用快捷

Editor

功能 快捷键
复制当前行 Ctrl-D
删除选中行 Ctrl-L
删除光标所在行 Ctrl-Shift-L
与上行交换 Ctrl-T
到上一段落 Ctrl-[
到下一段落 Ctrl-]
撤销/Undo Ctrl-Z
恢复/Redo Ctrl-Shift-Z
切换头文件与源文件 F11
注释 Ctrl-Shift-C
取消注释 Ctrl-Shift-X
自动完成 Ctrl-J
切换书签 Ctrl-B
到上个书签 Alt-PgUp
到下个书签 Alt-PgDown

Search

功能 快捷键
查找 Ctrl-F
查找下个 F3
查找上个 Shift-F3
在文件中查找 Ctrl-Shift-F
替换 Ctrl-R
在文件中替换 Ctrl-Shift-R
到指定行 Ctrl-G
到下个被改变的行 Ctrl-F3
到上个被改变的行 Ctrl-Shift-F3
到指定文件 Alt-G
到指定函数 Ctrl-Shift-G
到上个函数 Ctrl-PgUp
到下个函数 Ctrl-PgDown
到声明处 Ctrl-Shift-.
到实现处 Ctrl-.
打开include文件 Ctrl-Alt-. # 冲突,见5.1
到匹配括号 Ctrl-Shift-B

View

功能 快捷键
显示/隐藏信息板 F2
显示/隐藏管理板 Shift-F2
上移工程 Ctrl-Shift-Up
下移工程 Ctrl-Shift-Down
激活上个项目 Alt-F5
激活下个项目 Alt-F6

Build

功能 快捷键
Build Ctrl-F9
编译当前文件 Ctrl-Shift-F9
Run Ctrl-F10
Build and Run F9
Rebuild Ctrl-F11

Debug

功能 快捷键
切换断点 F5
调试/继续 F8
运行到光标处 F4
单步下行代码 F7
单步进入子函数 Shift-F7
单步跳出子函数 Ctrl-F7
单步下条指令 Alt-F7
单步进入子指令 Shift-Alt-F7

参考

5) 插件

5.1) keybinder(Keyboard Shortcuts)

location: D:\codeblocks\src\plugins\contrib\keybinder

修改快捷的插件,但只看到了wx3.0工程版本==。因而,还是要准备下wxWidgets3.0。

注:plugins分为3类,contrib下是社区贡献的非常有价值的插件,所以整合到了SVN。见参考1。

5.1.1) MinGW编译wxWidgets3.0

  1. wxWidgets3.0 svn: https://svn.wxwidgets.org/svn/wx/wxWidgets/tags/WX_3_0_0-rc2/
  2. 假设源码目录为"D:\WX_3_0_0-rc2"。则到"D:\WX_3_0_0-rc2\build\msw"目录。

2.1 修改config.gcc,防止连接时内存不够用。

CFLAGS ?= -fno-keep-inline-dllexport
CXXFLAGS ?= -fno-keep-inline-dllexport

2.2 然后,如下编译wxWidgets3.0:

mingw32-make -f makefile.gcc SHARED=1 MONOLITHIC=1 BUILD=release UNICODE=1 clean
mingw32-make -f makefile.gcc SHARED=1 MONOLITHIC=1 BUILD=release UNICODE=1

编译详看参考3,4。

5.1.2) 编译Code::Blocks

同1.4,不过:

  1. 打开"CodeBlocks_wx30.cbp"(注意还有其他区分),而不是"CodeBlocks.cbp"。
  2. "Global Variable Editor"时,wx base设为"D:\WX_3_0_0-rc2",而不是"D:\wxMSW-2.8.12"。

继而:

  1. 拷贝"D:\WX_3_0_0-rc2\lib\gcc_dll\wxmsw30u_gcc_custom.dll"到"D:\codeblocks\src\devel30"目录。
  2. 运行"D:\codeblocks\src\update30.bat",目录"D:\codeblocks\src\output30"下就是你的发行版了。

5.1.3) 编译keybinder

打开"D:\codeblocks\src\plugins\contrib\keybinder\keybinder_wx30.cbp"(注意还有其他区分),Build即可。

然后重新"update30.bat",重新打开C::B。在Settings > Editor...下多了Keyboard shortcuts,然后重定义吧。

把"Search > Open include file"改为"Ctrl-Alt-.",其与"Goto declaration"冲突。(r9741)

5.2) 参考

  1. Code::Blocks Plugins
  2. Creating a simple "Hello World" plugin
  3. Compile_wxWidgets_in_Unicode_mode
  4. Compiling wxWidgets with MinGW
  5. r9741 compile error with wx3.0 on Windows

6) 其他参考


Linux上安装与编译,参考:CentOS安装Code::Blocks

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!