如何通过现有代码创建项目以及如何设置代码辅助
撰稿及维护人:alexvsimon
2008 年 10 月 [修订版本号:V6.0-2]
开源项目通常由 make 实用程序生成,该程序在生成时使用一个 makefile。本文介绍了如何基于 makefile 创建 NetBeans IDE 项目。
有关在 NetBeans IDE 中使用 C/C++ 应用程序的详细信息,请参见 NetBeans Web 站点上的 C/C++ 应用程序学习资源页。
教程要求
在开始之前,确保对本节的前提条件有所了解。
前提条件
本教程假定您具有一些使用 C 和 C++ 编程的经验。
本教程所需要的软件
在开始之前,您需要安装 NetBeans 6.5。C/C++ 选项包括 NetBeans IDE 6.5 和 C/C++ 支持。
返回页首
问题是什么?
IDE 的一项职责就是构造代码模型。代码模型对 IDE 功能非常重要,例如:
为正确生成模型,IDE 需要关于项目的信息,例如:
- 编译的文件
- 使用哪个编译器
- 用户包含路径和每个已编译文件中的宏
- 使用的头文件
如果没有这些信息,IDE 将无法生成适当的模型,这将导致 IDE 功能无法正常工作。
当然,所有这些信息都包含在 makefile 中。问题是难以从 makefile 确定必要的信息,原因如下:
- 复杂的开源项目通常有一个分层文件结构,并且主 makefile 引用子目录中的 makefile。
- Makefile 经常使用 shell 脚本命令。
- 有时,make 实用程序的行为取决于其以前的操作;例如,取决于上一步中创建的文件是否存在。
NetBeans IDE 提供了另一种方法,使用以下文件中的编译器注释或调试信息来获取模型所基于的必要信息:
如何工作?
让我们了解在为开源应用程序创建新 NetBeans IDE 项目时的典型情况。
这种情况从下载开源项目开始。我们将使用 MySQL 项目。以下说明假定我们已经装入了该开源项目并安装了必要的软件。现在我们来配置该项目。
为保证编译器注释的完整性,我们提供了附加的编译标志:
./configure CFLAGS="-g3 -gdwarf-2" CXXFLAGS="-g3 -gdwarf-2"
这些标志有何作用?
我相信 -g 标志广为人知。此标志指示编译器在对象文件中包括调试信息。此标志的 -g3 修改使调试信息更完整。通过此标志,可以获取有关用户宏的信息。
-gdwarf-2 标志指示编译器使用版本 2 的 DWARF 调试信息格式。
我们使用 make 命令生成应用程序。基本上,我们必须确保应用程序使用上述标志进行编译。
如何指示 make 实用程序使用必要的标志取决于特定的开源项目。有时,需要导出环境变量:
export CFLAGS="-g3 -gdwarf-2"
export CXXFLAGS="-g3 -gdwarf-2"
对于不灵活的项目,有必要查看 makefile 的内容来了解如何提供标志。
现在,我们的开源项目已成功生成。因此能够创建 NetBeans IDE 项目了。
- 启动 NetBeans IDE。
- 通过选择“文件”>“新建项目”> "C/C++" >“基于现有代码的 C/C++ 项目”,创建一个新的基于现有代码的项目。
让我们了解一下“新建项目”向导中的步骤。
- 在第二步“生成工具”页中,我们必须指明开源项目的主 makefile 所在的位置。指向正确的 makefile 才能从 IDE 生成应用程序。
- 第三步值得额外注意。在“生成操作”页中,您可以指定应用程序的可执行文件(生成结果)所在的位置,这使得能够从 IDE 启动该应用程序。您可以稍后填写此字段。
在第五步“代码帮助配置”页中,向导会根据编译器注释,建议自动设置 IDE 项目。让我们看看这种情况下会发生什么情况。如果您在第三步指定了生成结果所在的位置,则向导将使用生成结果中的编译器注释。否则,向导将使用来自开源项目文件夹中所有对象文件、库和可执行文件的编译器注释。向导使用从这些文件获取的信息设置 IDE 项目。
配置级别指示向导如何整合发现的用户包含路径和宏。编译器注释包含每个已编译文件的用户包含路径和宏。但是,为便于进一步维护 IDE 项目,可以设置其他配置级别。例如,如果选择项目级别配置,则所有用户包含路径和宏都将整合到项目属性中。
- 在最后一步,选择 IDE 项目的位置。缺省情况下,IDE 建议将项目放在您的 home 文件夹中,这样可以将 IDE 项目与开源项目完全分离。有时,由于版本控制系统,此分离非常有用。但您完全可以使用开源项目本身的文件夹。IDE 将有关 IDE 项目的所有信息都放在一个名为 nbproject 的特殊文件夹中。
- 在 NetBeans IDE 项目创建结束时,向导在模型中包括的文件只有已编译文件或已编译文件中包含的文件。未使用的文件被标记为从代码帮助中排除。每个已编译文件都具有正确的用户包含路径和宏。
最后是几个问题的解答
如何编辑用户包含路径和宏?
在项目、逻辑文件夹或文件的属性中(“属性”>“代码帮助”>“C 编译器”>“常规”,或“属性”>“代码帮助”>“C++ 编译器”>“常规”)。请注意,属性可以从项目和逻辑文件夹继承到文件。文件具有 C 编译器或 C++ 编译器的属性,具体取决于文件扩展名。项目和文件夹具有 C 编译器或 C++ 编译器的属性。
如何检测出 IDE 项目具有错误配置?
通常,此类 IDE 项目具有未解析的 include 指令。它们显示在“项目”窗口中,并在项目节点的右上角用一个蓝色背景的小问号标记。通过右键单击项目节点并选择“代码帮助”>“显示执行失败的 #include 指令”,可以查看未解析的 include 指令列表。
是否可以配置已存在的 IDE 项目?
是。首先,用上面提到的必要标志生成开源项目。然后,右键单击项目节点并选择“代码帮助”>“配置代码帮助”。“配置代码帮助”向导具有两种工作模式:简单模式和高级模式。
- 简单模式重复新建项目向导的操作。
-
高级模式可让您选择获取编译器注释的不同方法,并具有分析结果的初步视图。
是否可以让一个 IDE 项目具备不同平台/设备的相关配置?
是。您可以在项目属性中管理配置。对于每个配置,您都可以启动“配置代码帮助”向导。在该向导中,指定不同平台/设备的生成结果。该向导将设置当前活动的配置。
返回页首