.. _doc_dev_examples: 示例 ===== 1. 公共库示例 -------------- .. _doc_dev_examples_eaevent: 1). eaEvent ~~~~~~~~~~~~~~ 位于 **./appBaseLibs/eaEvent** 目录. **eaEvent** 库为 **EventAdmin** 服务所依赖的公共库. 用于事件内容的包装, 内部实现依赖QT的 **QVariantHash** 等数据结构. 因此需要依赖 QT的 core 库. 最后将h文件及lib文件安装到 **./deps/workspace/install/${cpuType}** 目录. 其CMakeList部分内容如下: :: ... # 引用cmake模块 include(CagyMacros) ... # 查找QT依赖 if(NOT Qt5_FOUND) find_package(Qt5 REQUIRED COMPONENTS Core) endif() ... # 编译为lib add_library(${PROJECT_NAME} SHARED ${PROJ_SRCS} ) # 设置版本号 set_target_properties(${PROJECT_NAME} PROPERTIES VERSION ${SHARED_LIBRARY_VERSION} SOVERSION ${SHARED_LIBRARY_VERSION} OUTPUT_NAME ${PROJECT_NAME} DEFINE_SYMBOL ${PROJECT_NAME}_LIBRARY ) # 添加QT h文件包含路径 include_directories(SYSTEM ${QT_INCLUDE_DIR} ${QT_QTCORE_INCLUDE_DIR} ) # 添加项目源码h文件包含路径 target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src ) # 链接QT依赖库 target_link_libraries(${PROJECT_NAME} PUBLIC Qt5::Core ) # 安装lib CAGY_INSTALL_LIB(${PROJECT_NAME}) # 安装h文件 install(FILES ${BaseLib_HEADERS} COMPONENT Devel DESTINATION include) install(FILES ${eaEvent_HEADERS} COMPONENT Devel DESTINATION include/eaEvent) # 导出库以便可以使用 find_package() 进行查找 CAGY_GENERATE_PACKAGE(eaEvent) 具体业务逻辑部分可查看示例源码. .. _doc_dev_examples_osp: 2. OSP插件示例 ---------------- 1). eapub ~~~~~~~~~~~~ 位于 **./appTest/eapub** 目录. 不带UI的OSP插件, 主要演示使用 **EventAdmin** 服务发布事件的各种方式. 2). easub ~~~~~~~~~~~~ 位于 **./appTest/easub** 目录. 不带UI的OSP插件, 主要演示使用 **EventAdmin** 订阅事件. 3). pluginA ~~~~~~~~~~~~~ 位于 **./appTest/pluginA** 目录. 带UI的OSP插件, 插件界面用于显示到主界面中. 其通过 :ref:`ServiceRegistry方式 ` 将 服务进行注册发布, 工后续主界面调用以将插件内界面显示于主界面, 以及将 **QObject** 对象设置到 qml引擎的 rootContext 中. .. _doc_dev_examples_qt: 3. QT插件示例 ---------------- 1). TestA ~~~~~~~~~~~~ 位于 **./appExtension/TestA** 目录. QT业务逻辑插件, 本示例演示在插件中通过 :ref:`EventAdminService方式 ` 调用外部 以 :ref:`EventAdminService方式 ` 发布的服务. 该插件通过在 **carPram** 文件中, **PluginNode** 节点上配置 **model** 属性的方式进行加载, 插件界面跟随业务模块切换一起切换, 此种情况插件lib库需要放到 **./deploy/bin/app/models/third** 目录下, **model** 属性配置如下: :: 若将插件lib库放置于 **./deploy/bin/app/models/main** 目录下, 则无需配置 **carPram** 文件, 插件界面会被主界面加载显示, 不会跟随业务模块一起切换. 2). TestB ~~~~~~~~~~~~ QT业务逻辑插件, 本示例演示在插件中通过 :ref:`EventAdminService方式 ` 发布服务. 该插件库放置于 **./deploy/bin/app/models/third** 目录, 通过在 **carPram** 文件中, **PluginNode** 节点上配置 **model** 属性的方式进行加载.