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.h,my_new_module.c)。还会创建一个 Makefile。
要检查一切是否正常,请尝试编译新模块
cd my_new_module make
这将创建一个名为my_new_module.a的存档文件。
现在你可以编辑my_new_module.h和my_new_module.c文件。如果你的模块更复杂,你当然可以创建其他my_new_module_*.c和my_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(Subversion)来存储你的 Khepera III 模块。SVN 可能是当今最突出的系统,易于设置和使用。
如果你使用版本控制系统,你应该检入模块的以下文件
- 所有源文件(*.c,*.h)
- Makefile
- 编译后的存档文件(*.a)(这样,对于没有设置编译器的人来说,就可以使用编译后的副本)
- 程序所需的任何其他文件
你不应该检入
- 中间编译文件(*.o,*.d)