当前位置: 首页 > news >正文

Slicer中启动器的生成过程

程序的生成过程

SlicerCAT.exe是Slicer应用程序的一个定制版本,其生成过程主要通过CMake构建系统实现。以下是详细的生成流程:

  1. 应用程序配置定义

    • 在中,设置应用程序名称为"SlicerCAT",并定义了版本、描述、图标文件等基本属性。
  2. 应用程序库构建

    • 首先使用slicerMacroBuildAppLibrary宏构建应用程序库qSlicerApp,该库包含了主窗口、登录对话框等UI组件。
  3. 应用程序可执行文件构建

    • 接着,使用slicerMacroBuildApplication宏构建核心应用程序可执行文件:
      • 在Windows平台上,生成名为SlicerCATApp-real.exe的真实可执行文件
      • 该文件包含了Main.cxx中的入口点代码,并链接到之前构建的应用程序库
  4. 启动器(Launcher)生成

    • 这是SlicerCAT.exe的关键生成步骤:
      • 利用CTKAppLauncher框架创建启动器可执行文件
      • 配置启动器的环境变量、库路径、Python路径等运行时设置
      • 处理启动参数和默认参数
      • 配置启动画面(splash screen)
  5. 图标资源更新

    • 在Windows平台上,创建自定义目标SlicerCATUpdateLauncherIcon
    • 使用CTKResEdit_EXECUTABLE工具将指定的图标文件(Slicer.ico)更新到启动器可执行文件中
  6. 安装配置

    • 配置安装规则,将启动器(SlicerCAT.exe)安装到根目录
    • 将真实的应用程序(SlicerCATApp-real.exe)安装到bin目录
    • 安装启动器配置文件SlicerCATLauncherSettings.ini到bin目录
    • 安装启动画面图像到bin目录(如果启用)
  7. 启动流程

    • 最终用户运行SlicerCAT.exe时,它会:
      • 读取启动器配置文件
      • 设置必要的环境变量
      • 显示启动画面
      • 启动真实的应用程序SlicerCATApp-real.exe

整个过程充分利用了CMake的宏机制和CTKAppLauncher框架,实现了灵活的应用程序打包和启动管理。

CTKAppLauncher生成启动器的过程

CTKAppLauncher生成SlicerCAT.exe的具体步骤如下:

  1. CTKAppLauncher预编译二进制文件下载

    • 在中,Slicer作为外部项目自动下载预编译的CTKAppLauncher
    • 根据操作系统选择相应版本,Windows平台使用i386架构版本
    • 下载版本为0.1.31,从GitHub Releases获取
  2. 启动器配置准备

    • 定义了两类关键配置:
      • 构建树配置(BUILD tree):设置开发环境下的库路径、可执行文件路径和环境变量
      • 安装树配置(INSTALL tree):设置最终安装版本的路径和环境变量
    • 这些配置包括库搜索路径(LIBRARY_PATHS)、可执行文件路径(PATHS)、环境变量(ENVVARS)和特殊路径环境变量(PYTHONPATH、QT_PLUGIN_PATH等)
  3. 启动器配置生成

    • 在中,调用ctkAppLauncherConfigureForTarget宏进行配置:
      • 设置应用程序名称(SlicerCAT)和版本信息
      • 配置启动画面和延迟时间
      • 设置默认启动参数和无启动画面参数列表
      • 添加额外可执行文件(如designer、cmd等)
      • 配置构建树和安装树的环境变量、库路径和Python路径
  4. SlicerCAT.exe启动器生成

    • Windows平台上,区分两种启动器模式:
      • 控制台版本(CTKAppLauncher):用于命令行和Python控制台
      • GUI版本(CTKAppLauncherW):用于主应用程序,无控制台窗口
    • 创建自定义目标SlicerCATUpdateLauncherIcon,使用CTKResEdit工具将Slicer.ico图标更新到启动器可执行文件中
    • 生成SlicerCATLauncherSettings.ini配置文件,包含所有环境变量和路径设置
  5. 安装配置

    • 将更新图标的启动器重命名为SlicerCAT.exe并安装到应用根目录
    • 将真实的应用程序(SlicerCATApp-real.exe)安装到bin目录
    • 将启动器配置文件(SlicerCATLauncherSettings.ini)安装到bin目录
    • 将启动画面图像安装到bin目录(如果启用)
  6. 启动流程

    • 用户运行SlicerCAT.exe时,它会:
      • 读取同目录下的SlicerCATLauncherSettings.ini配置
      • 设置所有必要的环境变量、库路径和Python路径
      • 显示启动画面
      • 调用bin目录下的SlicerCATApp-real.exe作为实际应用程序

整个过程通过CMake宏系统实现了高度自动化,确保应用程序在各种环境下都能正确配置并运行。

启动器两种模式的实现过程

CTKAppLauncher在Windows平台上区分两种模式(控制台和GUI)的启动器实现过程如下:

  1. 模式控制变量

    • 通过CMake选项Slicer_BUILD_WIN32_CONSOLE_LAUNCHER控制,默认值为OFF
    • 该选项定义在第48行
    • 该选项仅在Windows平台上有效,其他平台上自动设置为OFF
  2. 变量传递机制

    • 在第423行,Slicer_HAS_CONSOLE_LAUNCHER变量被设置为${Slicer_BUILD_WIN32_CONSOLE_LAUNCHER}的值
    • 这个变量成为后续决定使用哪种启动器模式的关键标志
  3. 两种启动器模式

    • 控制台模式:使用CTKAppLauncher.exe,启动时显示命令行窗口,适合调试和查看输出
    • GUI模式:使用CTKAppLauncherW.exe,启动时不显示命令行窗口,是默认选项,提供更好的用户体验
  4. 启动器配置过程

    • 在第712行,调用ctkAppLauncherConfigureForTarget函数配置启动器
    • 该函数配置应用名称、版本、splash屏幕、默认参数等设置
    • 配置生成相应的启动器配置文件
  5. 安装过程中的区分处理

    • 在第761行,根据Slicer_HAS_CONSOLE_LAUNCHER的值选择不同的安装逻辑:
      • 当值为TRUE时,直接安装控制台启动器
      • 当值为FALSE时(默认),使用GUI启动器并进行额外处理
  6. GUI启动器的特殊处理

    • 复制CTKAppLauncherW.exe并重命名为应用程序名称
    • 使用CTKResEdit工具更新可执行文件的图标资源
    • 最终在安装目录中生成没有命令行窗口的主启动器
  7. Python控制台的特殊处理

    • 根据中的注释,Python控制台始终使用控制台启动器(CTKAppLauncher)而不是GUI启动器(CTKAppLauncherW),以便显示Python输出

这种实现方式允许开发者根据需要灵活选择启动器模式,特别是在调试过程中可以通过设置Slicer_BUILD_WIN32_CONSOLE_LAUNCHER=ON来启用控制台输出,而在正式发布版本中使用GUI启动器提供更干净的用户体验。

http://www.dtcms.com/a/549950.html

相关文章:

  • html5手机网站开发工具响应式网站和自适应
  • 百度快照 直接进网站中核二二建设有限公司
  • 工具与业务流程脱节时如何解决
  • h5游戏免费下载:石头剪刀布
  • 网站备案信息抽查阳江网站建设 公司
  • html5 网站模板下载建设网站的方案
  • Angular【组件】
  • 公司网站做推广支出分录制作系部网站首页
  • adb disable-verity
  • 使用 Node.js 和 Express 构建 RESTful API
  • 局域网下怎么访问自己做的网站仿做网站可以整站下载器吧
  • 收录网站查询安徽省建设安全监督站的网站
  • 科技赋能农业现代化的破局之道
  • app网站建站系统策划方案珠海网站运营
  • 怎么选?时间序列数据预测-Transformer架构的模型和算法
  • 怎么使用创客贴网站做图学seo网站推广好吗
  • 做网站需要缴什么费用杭州cms建站模板
  • Python快速入门专业版(五十四):爬虫基石:HTTP协议全解析(从请求到响应,附Socket模拟请求)
  • 综合案例:Python 数据处理——从Excel文件到数据分析
  • Java基础——常用API2
  • 自己做的网站能上传到凡科吗网站站点多少钱
  • 手机如何网站成都哪里好玩
  • huggingface下载相关
  • rollup == JavaScript 打包器
  • ROS2 Windows安装
  • 四川省建设厅招标网站网站与网页 主页的概念及它们的区别
  • Unity编辑器扩展入门篇 - Unity Inspector自定义脚本菜单
  • Redis(一)——数据类型一
  • 专业网站建设分为8步代注册公司要多少钱
  • 网站建设 网页设计 网站制作南宁哪个网络公司建网站好