# Chapter 8. 项目

# 8.1. 项目类型

## 8.1.1. 程序

KDevelop 以.kdevprj结尾创建了一个项目文件。该文件包含你的项目的所有信息, 因此小 心不要将它删除了。它存储在项目的基本目录下，在装载项目时必须打开。项目文件保存了 你的例如文件属性，安装路径，发布状态及编译选项compiler options (CXXFLAGS) 的的文件的所有信息。文件属性设置允许你记录文件位置线索。

有了应用指南KAppWizard , 你可以根据你选择的应用类型创建一个心的应用项目。眼 下, 应用指南KAppWizard 可生成四种应用框架, 如下:

- 单一的文件界面(SDI) KDE -应用包含一个菜单条, 一个工具条和一个状态条。 它包含基本控制资源管理以允许将应用框架扩展为一个独特的KDE 应用。应用框架还 包含状态条帮助信息。从编程人员的眼光来看,它基于三个依靠MVC-concept (Model-View- Controller)的特别的应用类classes 。从技术上来说, 基本的类classes 可能 不是以那样浏览的, 但是它的建造至少时逻辑化的，以使用GUI 来建造应用。

- 一个基于KDE 的应用框架窗口。这以应用类型为那些想从草稿开发自己的程序 的人提供了很大的灵活性, 但也可用作开发应用或模块的向导的基础。

- 一个只基于Qt的程序框架。对于那些希望使用Qt-library 作为GUI 界 面的人, 我们尽量为你提供一个聪明的框架以支持你的应用开发。由于它完全支持Qt编程, 对于只使用Qt创建一个全功能的应用应该没有多大的问题。

- 一个C++ 程序结构。这一应用类型旨在为那些希望编写基于终端的 C++程序的人服 务。只需在main()中去除"Hello World" 行并构造你的类classes ，方式上 Kdevelop 与KDE 应用一样。

- 一个为C编程人员准备的C编程框架。这也是一个基于终端的应用，但只使用C 编 译器。

此外, Kdevelop让你可以使用已存在的项目。它们可以由程序员自己通过设置和Makefiles 来设定任何选项。至于执行及建立过程, 当前状态只允许与其他基类相同的结构。用应用向 导创建一个自定义项目并将你的文件加入项目以允许类浏览器的扫描。

为保证建立过程, 你自定义的项目必须在一个匹配你的项目的小写字母名的子目录中包含所 有资源；二进制文件的执行也限于此小写项目名。

注意，Kdevelop并部把任何信息写入Makefiles 或设置文件。必须由你负责任何项目操作 并亲自进行设置。

## 8.1.2. 库

创建库的一般项目类型暂时还不能用。无论如何, 创建库对KDevelop来说不是不可能的。 这里有一些方法指导:

- 无论何时当你的项目的子目录得到另一个包含资源文件的子目录,Kdevelop会建立一 个它们的静态库。那意味着静态库已获得自动创建的支持以挑选项目源文件。注意。静态库 其后是二进制文件的一部分，不会得到安装。

- 要创建一个共享的库, 你可以选择创建另一个项目子目录。在这个子目录中创建的源 文件包含在项目内，因此在类浏览器中作为根部的类可用。要创建共享的库,编程手册 KDevelop编程手册 提 供一个 Makefile.am 模板。如果子目录的Makefile被加到configure.in 脚本, 你只需运 行"Autoconf 和automake" 及 "Configure"以创建Makefiles。创建只有在子目录中使用创 建命令才行, 因为Kdevelop从原始项目子目录中激活创建。另一个创建共享库的可能的方 法是根据编程手册里的模板，依照项目改动 章节中中描述的项目修改规则，手动的改变原始项目录的Makefile.am。

- 要安装一个共享的库, 你必须查看KDE-文件-系统标准，编程手册KDevelop编程手册中有描 述。

## 8.1.3. 多目标

对于一些项目来说, Kdevelop当前状态的设备不会持久。那些是包含了多个目标的项目， 好比包含了多个应用的包。象"执行"一样的命令要求开发者只建立一个目标。你必须编写你 自己的到Makefile.am 的入口并为创建另外的二进制和十进制文件创造目录，那些项 目类型只有这样才获得支持。但是, 一个建立过程总是不顾及实际目标是什么而激活你的建 立程序；这样这些函数仍然可以使用(限定建立是从主项目子目录激活的) 另一个仍然使用这种类型及得到二进制本身的方法是创建空的项目并将它们的子目录到其后 会包含所有资源的目录并与项目文件相连project files 。然后你可以根据其项目文件独 立的装载每个目标；这也允许执行及调试debugging 目标。

按照项目改动一章中解释的规则及以下的对编写主 项目子目录的 Makefile.am的指导(所有改动都在KDevelop 写区域外)，主项目子目录内有多 个二进制或库是可能的:

- 将你的目标加入bin&_;PROGRAMS ，如果它可执行的话

- 加入你的库声明行，如果它是共享的库

- 加入与最初二进制的建立相同的声明:

  - newtarget&_;METASOURCES

  - newtarget&_;LD&_;FLAGS

  - DISTCLEANFILES

  - 复制信息: 原始二进制的入口，由newtarget&_;SOURCES代替target&_;SOURCES, newtarget.pot代替target.pot

- 增加你的资源，例如Kdevelop二进制或库的写区域

- 要安装静态库, 用Kdevelop子目录内的"自动生成"来建造库。然后根据所需设置在书 写区域外修改Makefile.am。