1 管理多个源文件
到目前为止,我们已经编译了一个小型编辑器。但一些不好的迹象已经开始出现。
- 我们只有一个C源文件,并将所有内容都放在其中。我们需要解决这个问题。
- 有两个编译器,gcc和glib-compile-resources。我们应该通过一种构建工具来控制它们。
这些思想对于管理大型源文件很有用。
2 将C源文件分成两部分
当你把C源文件分成几个部分时,每个文件应该包含一个东西。例如,我们的源代码有两件事,TfeTextView的定义和与GtkApplication和GtkApplicationWindow相关的函数。将它们分成两个文件,tfetextview.c和tfe.c是一个好主意。
- tfetextview.c包含了TfeTextView的定义和函数。
- tfe.c包含main、app_activate、app_open等函数,它们与GtkApplication和GtkApplicationWindow相关
现在我们有三个源文件:tfetextview.c、tfe.c和tfe3.ui。tfe3的3就像一个版本号。通过文件名管理版本是一种可能的想法,但它可能会带来麻烦。您需要在每个版本中重写文件名,它会影响引用文件名的源文件的内容。因此,我们应该从文件名中去掉3。
在tfe.c中调用函数tfe_text_view_new来创建一个TfeTextView实例。但是它是在tfetextview.c中定义的,而不是tfe.c。没有tfe_text_view_new的声明(而不是定义)会在编译tfe.c时出错。该声明在tfe.c中是必要的。这些公开信息通常写在头文件中。它有.h后缀,像tfetextview.h,头文件包含在C源文件中。例如,tfetextview.h包含在tfe.c中。
下面列出了所有的源文件。
/* filename: tfetextview.h */
1 #include <gtk/gtk.h>
2
3 #define TFE_TYPE_TEXT_VIEW tfe_text_view_get_type ()
4 G_DECLARE_FINAL_TYPE (TfeTextView, tfe_text_view, TFE, TEXT_VIEW, GtkTextView)
5
6 void
7 tfe_text_view_set_file (TfeTextView *tv, GFile *f);
8
9 GFile *
10 tfe_text_view_get_file (TfeTextView *tv);
11
12 GtkWidget *
13 tfe_text_view_new (void);
14
/* filename: tfetextview.c */
1 #include <gtk/gtk.h>
2 #include "tfetextview.h"
3
4 struct _TfeTextView
5 {
6 GtkTextView parent;
7 GFile *file;
8 };
9
10 G_DEFINE_TYPE (TfeTextView, tfe_text_view, GTK_TYPE_TEXT_VIEW);
11
12 static void
13 tfe_text_view_init (TfeTextView *tv) {
14 }
15
16 static void
17 tfe_text_view_class_init (TfeTextViewClass *class) {
18 }
19
20 void
21 tfe_text_view_set_file (TfeTextView *tv, GFile *f) {
22 tv -> file = f;
23 }
24
25 GFile *
26 tfe_text_view_get_file (TfeTextView *tv) {
27 return tv -> file;
28 }
29
30 GtkWidget *
31 tfe_text_view_new (void) {
32 return GTK_WIDGET (g_object_new (TFE_TYPE_TEXT_VIEW, NULL));
33 }
34
/* filename: tfe.c */
1 #include <gtk/gtk.h>
2 #include "tfetextview.h"
3
4 static void
5 app_activate (GApplication *app) {

本文介绍了如何管理和组织C语言项目的源文件,强调了将大文件拆分为多个部分的重要性,并讨论了使用Meson和Ninja、Make以及Rake等构建工具进行编译和构建流程的管理。通过示例展示了如何创建头文件、分割源代码以及使用不同构建系统自动化编译过程。
最低0.47元/天 解锁文章
1685

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



