SOURCES文件详解

 

在Windows CE中,所有的驱动程序都以dll形式存在。Dll文件可以用EVC来开发,也可以使用PB来开发,使用PB开发驱动程序,可以跟NK同时进行编译,要比EVC来的方便一点。这篇文章就只要介绍用PB来进行dll库开发的方法。
使用PB来开发,首先应该在你的工作平台下面建立一个目录,用来存放源文件,同时要修改dir文件,使得编译的时候能够进到源文件所在的目录。
编写dll的方法这里就不说了,反正就是写一堆的函数,这里主要解释一下使用PB编译,需要增加的文件。
第一个文件是sources文件,这里给出了一个sources文件的例子:
TARGETNAME=led
使用TARGETNAME来指示生成目标的文件名(不包含扩展名,扩展名PB会自动加上)
RELEASETYPE=PLATFORM
RELEASETYPE指示该文件将要生成的类型,一共有五个取值:
SDK:使用该类型将使得生成的目标文件被存储到%_PUBLICROOT%/Oak目录,而lib文件被放置到%_PUBLICROOT%/Sdk目录
DDK:使用该类型将使得生成的目标文件被存储到%_PUBLICROOT%/Oak目录,而lib文件被放置到%_PUBLICROOT%/Ddk
PLATFORM:使用该类型将使得生成的文件受平台控制
LOCAL:该类型使得生成的文件全部放置到当前路径
CUSTOM:该类型使得生成的文件放置到TARGETPATH制定的位置(也就是说必须要有TARGETPATH参数设置)
TARGETTYPE=DYNLINK
生成的目标类型,LIBRARY表示是一个lib库,DYNLINK则表示是dll,而PROGRAM则是一个exe文件
TARGETLIBS=
$(_COMMONSDKROOT)/lib/$(_CPUINDPATH)/coredll.lib
TARGETLIBS指示连接需要的库的名字
SOURCELIBS=mm.lib
SOURCELIBS指示将于某一个lib一起连接。上面一个lib是需要什么就取什么,而这个lib则是连接所有的。
DEFFILE=led.def
DLL文件的def文件名
INCLUDES=../../inc
指定include的路径
SOURCES=
led.c
指定参与该规则的所有的源文件
第二个则使makefile文件,该文件只需要!INCLUDE $(_MAKEENVROOT)/makefile.def就可以了,建议不要修改(我也不知道如何修改)
第三个文件是def文件,下面是一个该文件的实例
LIBRARY led
生成的库(.lib)文件名(PB自动生成扩展名)
EXPORTS
mm_init
EXPORTS指定了需要导出的函数名称
建立好这些文件之后,选择PB的build菜单的open build releasee directory,到达所在的目录,执行build -c,如果没有错误,就按照我们的要求生成文件了

SOURCES文件详解

SOURCES文件是WINCE底层开发中最重要的文件之一,主要的配置项如下:

 

TARGETNAME,定义模块名称.
TARGETTYPE,模块的种类,可以是DYNLINK, LIBRARY,EXE.
如果TARGETTYPE是DLL,则可以定义DLLENTRY,将Dll入口定义成别的不是DLLMain的函数,如果DLL的入口是DllMain,则不需要别的定义。
如果TARGETTYPE是EXE,则可以定义EXEENTRY,用于指定EXE的入口函数.

如果TARGETTYPE是LIBRARY,则不需要定义入口函数。


INCLUDES,如果一个模块需要使用非标准路径下的头文件时,需要定义INCLUDES,用于包含更多的头文件路径,用法如下:

INCLUDES=$(INCLUDES);/new directory/...,注意定义新的INCLUDES时,需要包含INCLUDES原来的值,否则就需要包含所有可能的目录。

TARGETLIBS,SOURCELIBS用于定义该模块需要链接哪些库文件.


TARGETLIBS,如果一个库以DLL的形式提供给调用者,就需要用TARGETLIBS,它只链接一个函数地址,系统执行时会将被链接的库加载。比如coredll.lib就是这样的库文件。即动态链接。

SOURCELIBS,将库中的函数实体链接进来。即静态链接,用到的函数会在我们的文件中形成一份拷贝。


注意,内核这个执行文件是没有TARGETLIBS的,GIISR.DLL也不能有TARGETLIBS。


WINCECOD,如果将其定义为1,则编译器会为每一个文件生成.cod文件,它是一个汇编文件,调试时查看汇编代码也是一种很好的办法。

<think>好的,我现在需要回答用户关于Qt Creator中.pro文件的详细说明和用途的问题。首先,我得回忆一下自己了解的Qt项目结构,特别是.pro文件的作用。记得.pro文件是Qt项目的核心配置文件,类似于其他构建系统中的Makefile或CMakeLists.txt,但具体语法和功能可能有所不同。 用户提到了几个引用,我需要结合这些引用内容来组织答案。比如引用[1]是关于pro文件的设置,引用[4]详细说明了TEMPLATE变量和OTHER_FILES,引用[5]提到在Ubuntu中使用pkg-config。这些都需要整合到回答中。 首先,应该解释.pro文件的基本概念,它的作用是什么。然后说明它的结构,比如常见的变量如QT、SOURCES、HEADERS等。接着可能需要分点详细说明各个变量的用途,例如TEMPLATE决定项目类型,QT模块的添加,文件列表的指定,以及配置选项如CONFIG。此外,可能还需要提到如何在.pro文件中使用外部库,比如通过PKGCONFIG,如引用[5]提到的例子。 用户可能还想知道如何手动编写或修改.pro文件,以及Qt Creator如何与这些文件交互。引用[2]和[3]提到了项目转换和构建流程,这部分信息可能对用户有帮助,特别是如何从Qt Creator项目转换为标准Qt项目,或者构建步骤中的qmake和make的使用。 需要注意回答的结构要清晰,分点列出,可能用标题或编号来组织内容。同时,要确保LaTeX格式正确,比如行内公式用$...$,独立公式用$$...$$,但在这个问题中可能涉及公式较少,主要关注代码块和变量格式。例如,变量名可以用等宽字体或斜体,但根据用户要求,可能需要用$...$包裹,比如$QT$变量。 还要生成相关问题,这部分需要考虑用户可能进一步询问的方向,比如如何包含第三方库、处理多平台配置、调试.pro文件等。需要确保问题与.pro文件相关,并且有实际意义。 在引用部分,要自然地添加引用标识,比如在提到项目类型时引用[4],在讲构建流程时引用[3],转换项目时引用[2]。同时,确保每个引用只在第一次提到时标注,避免重复。 最后,检查是否符合用户的所有要求:中文回答,结构清晰,正确使用LaTeX,生成相关问题,引用正确。可能还需要注意避免技术术语过多,保持解释易懂,但用户的问题似乎比较技术性,所以适当使用术语是必要的。 总结步骤: 1. 介绍.pro文件的作用和重要性。 2. 详细说明.pro文件的结构,分点解释各个常用变量。 3. 提供配置示例,如添加模块、使用pkg-config。 4. 说明构建流程,引用相关步骤。 5. 生成相关问题,覆盖常见扩展方向。</think>### Qt项目.pro文件详解 .pro文件是Qt项目的核心配置文件,用于定义项目结构、依赖关系和构建规则。它由qmake工具解析,生成Makefile实现自动化构建[^3][^4]。 #### 一、.pro文件基础结构 1. **注释** 使用`#`符号进行单行注释: ```qmake # 这是一个注释 ``` 2. **变量赋值** 通过`=`定义变量,`+=`追加值: ```qmake QT += core gui # 添加Qt模块 SOURCES += main.cpp ``` 3. **条件判断** 使用`win32`、`linux`等平台标识控制编译选项: ```qmake win32 { LIBS += -lopengl32 } ``` #### 二、关键配置项详解 1. **TEMPLATE** 定义项目类型,决定构建输出[^4]: ```qmake TEMPLATE = app # 应用程序(默认) TEMPLATE = lib # 库文件 TEMPLATE = subdirs # 多子项目管理 ``` 2. **QT模块配置** 通过`QT`变量指定依赖的Qt模块: ```qmake QT += core gui widgets network # 添加核心模块 ``` 3. **文件列表** - `SOURCES`:源文件 - `HEADERS`:头文件 - `FORMS`:UI设计文件 - `RESOURCES`:资源文件(.qrc) ```qmake SOURCES += main.cpp widget.cpp HEADERS += widget.h ``` 4. **构建配置** 通过`CONFIG`设置编译选项: ```qmake CONFIG += c++11 debug # 启用C++11和调试模式 CONFIG -= qt # 移除默认配置 ``` 5. **外部库集成** - `LIBS`:直接链接库文件 - `INCLUDEPATH`:添加头文件路径 - `PKGCONFIG`(Linux):通过pkg-config集成库[^5] ```qmake # OpenCV配置示例 unix:!macx { CONFIG += link_pkgconfig PKGCONFIG += opencv } ``` #### 三、完整配置示例 ```qmake # 项目类型 TEMPLATE = app # Qt模块配置 QT += core gui widgets # 文件列表 SOURCES = main.cpp \ widget.cpp HEADERS = widget.h FORMS = mainwindow.ui # 构建配置 CONFIG += c++11 debug # 第三方库配置 win32 { LIBS += -L"C:/OpenCV/lib" -lopencv_core2413 INCLUDEPATH += "C:/OpenCV/include" } ``` #### 四、构建流程 1. 执行`qmake`生成Makefile 2. 执行`make`进行编译(Windows使用`mingw32-make`) #### 五、项目转换方法 Qt Creator项目与标准Qt项目可通过以下步骤转换[^2]: 1. 在Qt Creator中定位项目文件夹 2. 执行`qmake -project`生成.pro文件 3. 手动补充文件列表和配置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值