跳转到内容

Khepera III 工具箱/编写自己的模块

来自维基教科书,开放世界中的开放书籍

如果你想在多个程序中使用相同的代码段(例如传感器板接口或通用算法),创建模块可能很有用。这样的模块可以在所有程序中包含并使用。

Khepera III 工具箱为你提供了一个模块模板和一个 Makefile。

准备环境

[编辑 | 编辑源代码]

确保你拥有一个工作开发环境,如编写自己的程序中所述。

创建新模块

[编辑 | 编辑源代码]

要创建一个新模块,请输入

cd my_khepera3_module_directory
k3-create-module my_new_module

其中my_new_module表示你的模块名称。这将创建一个名为my_new_module的文件夹,其中包含头文件和实现文件(my_new_module.hmy_new_module.c)。还会创建一个 Makefile。

要检查一切是否正常,请尝试编译新模块

cd my_new_module
make

这将创建一个名为my_new_module.a的存档文件。

现在你可以编辑my_new_module.hmy_new_module.c文件。如果你的模块更复杂,你当然可以创建其他my_new_module_*.cmy_new_module_*.h文件(注意前缀my_new_module_!)。所有这些附加文件将自动编译,并可用于包含该模块的程序。

测试模块

[编辑 | 编辑源代码]

模块不能独立执行。要测试模块,你必须创建一个包含此模块的程序。要包含你的模块,请在程序的Makefile中添加以下行

MY_MODULES := path/to/my_new_module

这将告诉编译器查找该模块的*.h文件,并将my_new_module.a存档集成到程序中。(如果你的程序需要多个模块,只需在同一行添加它们。注意所有模块文件夹都必须位于相同的位置。)

现在,你可以在程序中使用模块的功能,并用它来测试这些功能。注意,无论何时更改模块中的代码,都需要先重新编译模块,然后重新编译程序。

重命名模块

[编辑 | 编辑源代码]

可以通过修改Makefile中的以下行来更改二进制可执行文件的名称

ARCHIVE := my_new_module.a

注意,存档文件应该始终与项目文件夹同名,后缀为.a

在模块中包含模块

[编辑 | 编辑源代码]

模块可以包含其他模块。要包含标准模块,请在 Makefile 中添加以下行(当然,还有你想要添加的模块)

MODULES := khepera3 commandline i2cal

要包含你自己编写的其他模块,请添加

MY_MODULES := path/to/my_other_module_1 path/to/my_other_module_2

到 Makefile 中。

SVN/版本控制系统问题

[编辑 | 编辑源代码]

程序一样,我们强烈建议使用版本控制系统,如SVN(Subversion)来存储你的 Khepera III 模块。SVN 可能是当今最突出的系统,易于设置和使用。

如果你使用版本控制系统,你应该检入模块的以下文件

  • 所有源文件(*.c,*.h)
  • Makefile
  • 编译后的存档文件(*.a)(这样,对于没有设置编译器的人来说,就可以使用编译后的副本)
  • 程序所需的任何其他文件

你不应该检入

  • 中间编译文件(*.o,*.d)
华夏公益教科书