VS2022 编译 OpenCPN 开源电子海图 + 修改代码进行汉化

一、前言

OpenCPN 是一款广受欢迎的开源电子海图(ECDIS)软件,广泛应用于航海导航、航线规划等领域。对于航海爱好者、航海从业者以及相关开发者来说,能够编译和定制 OpenCPN,不仅可以获得更丰富的功能体验,还能根据自身需求进行个性化二次开发。本博文将详细介绍如何在 Windows 环境下,利用 Visual Studio 2022,从源码编译 OpenCPN,并讲解通过修改文件进行简单的汉化,帮助你打造属于自己的中文电子海图软件。
本教程适用于具备一定 Windows 基础知识的开发者或技术爱好者,无论你是想深度参与 OpenCPN 的开源协作,还是希望为本地化和中文化做出贡献,都可以通过本文掌握完整的操作流程。
参照官网Windows编译教程和自己踩的坑,给大家写了一篇博客,Android编译还没完全搞懂,但有了基本思路,在线求大佬带一下。

二、开发环境准备

在开始编译和汉化 OpenCPN 之前,需要先搭建好开发环境。以下是本流程所需的软件工具及相应准备工作:

1. 必备软件及安装

一键安装代码:

# 安装 Chocolatey 及基础依赖(管理员权限下)
Set-ExecutionPolicy Bypass -Scope Process -Force; `
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; `
iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
# 一件安装依赖等
choco install -y git cmake wget 7zip

请不要跳过检查环境的步骤!!!

Visual Studio 2022 社区版或更高版本
下载安装地址:Visual Studio 官网
安装时请勾选“使用C++的桌面开发”工作负载,以包含C++编译器和相关工具。
在这里插入图片描述
在这里插入图片描述

CMake
用于管理编译配置与生成 Visual Studio 项目文件。
下载安装地址:CMake 官网

Git
版本管理工具,用于获取 OpenCPN 源代码。
下载安装地址:Git 官网

wxWidgets
wxWidgets 在最新版本的批处理脚本中已经包含了下载到配置全流程的处理,做了很大的简化,但需要特定版本结合使用,需要查看配置文件。在后文中会详细提到,不用额外安装。

Poedit
便捷编辑和管理 .po 语言包文件,方便汉化。
下载安装地址:Poedit 官网

Chocolatey
用于包管理,方便自动补齐缺失的小组件。
打开PS,输入以下指令自动安装(这一步可能需要关某些工具):

Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))

执行完在PS中执行

choco

若显示版本号则说明配置成功,成功后,下载7zip用于批处理脚本的解压命令:

choco install 7zip

2. 重要准备步骤与环境配置

确保 CMake、Git、Poedit等bin环境均已添加到系统 PATH 环境变量中!!!
在这里插入图片描述

使用下面的代码进行检查:

git --version
cmake --version

强烈建议所有工具和源码路径均使用英文,并避免路径中出现空格或中文字符,以防编译过程中出错。

三、OpenCPN编译

1、源码

打开“x86 Native Tools Command Prompt for VS 2022”!!!
打开“x86 Native Tools Command Prompt for VS 2022”!!!
打开“x86 Native Tools Command Prompt for VS 2022”!!!
首先建立一个目录,cd到目录中作为项目根目录。使用下面的命令下载并更新项目:

git clone https://github.com/opencpn/opencpn
cd opencpn # 到clone下来的目录里
git submodule update --init --recursive # 更新子模块 请注意,这一步可能要多试几次才能完全成功
.\buildwin\winConfig.bat --debug --relwithdebinfo

在看到

这个提示的时候选择Y,让子弹飞一会儿~

2、wxWidgets环境安装

当出现下面图片的时候:
在这里插入图片描述
这是在提示找不到wxWidgets配置,执行下面的命令:

git clone --jobs 2 --depth 1 --recurse-submodules --shallow-submodules --branch v3.2.7 https://github.com/wxWidgets/wxWidgets 你的工作目录\ocpn_wxWidgets

这里的版本需求你可能需要在类似于以下目录的脚本中查看,可以将.bat 后缀换为.txt进行查看,再换回去

"D:\OpenCPN_VS\opencpn\buildwin\winConfig.bat"

如果在wxWidgetsclone过程中开梯子主目录已经下载完,但子模块还是不行,可以使用以下命令对wxWidgets的子模块进行逐个更新,可以先看一下下面的代替方案:

cd 你的工作目录\ocpn_wxWidgets
git submodule sync
git submodule update --init --recursive

对于有工具的用户,可以参考以下配置,这里的127.0.0.1代表的就是你本机的IP地址,因为服务就在你本机上运行

git config --global https.proxy http://127.0.0.1:7890
git config --global https.proxy http://127.0.0.1:7890

下载好wxWidgets模块后回到opencpn工作目录,继续工作。

3、字符集编码问题解决和sln项目生成

.\buildwin\winConfig.bat --debug --relwithdebinfo

当卡在

Could NOT find Shapelib (missing: SHAPELIB_LIBRARY SHAPELIB_INCLUDE_DIR)

的时候按下ctrl+C给一个中断,这个包可有可无

不出意外的话,会提示与字符集有关的错误,主要是因为下载的文件编码格式与VS不一致,导致“{”等符号错位了,就会报错,往往体现为C2001 & C1075 错误(代码格式或转义问题),别急,只要找到报错的文件使用UTF-8编码保存一下就可以了(“正体字”请换为英文),错误文件应该形如:

D:\OpenCPN_VS\opencpn\gui\src\hotkeys_dlg.cpp

这个文件直接将编码格式改为UTF-8 BOM
这是第一个报错

修改保存好文件(覆盖保存)之后,重新执行

.\buildwin\winConfig.bat --debug --relwithdebinfo

将遇到第二个文件内容导致的编译错误:

D:\OpenCPN_VS\opencpn\gui\src\options.cpp

打开ctrl+F 查找“正”,将“正体字”中文字符用英文代替。
这个文件直接将编码格式改为UTF-8

修改保存好文件(覆盖保存)之后,重新执行

.\buildwin\winConfig.bat --debug --relwithdebinfo

应该可以成功生成sln项目,注意此时控制台输出的内容并牢记。
在这里插入图片描述

四、项目运行、海图资源补充、简单汉化

1、项目运行地址

生成的项目文件位于类似于

"D:\OpenCPN_VS\opencpn\build\OpenCPN.sln"

的地方,打开生成项目,但建议你先阅读下面两个小节再打开项目,否则只能删除.ini文件,再全部重新生成了。

2、简单汉化

汉化其实很简单,在上文options.cpp中,我们修改了“正体字”部分,其实就应当敏锐的察觉到这里就是中文选项定义的地方。打开文件来到下图部分,取消注释简体中文就可以了!
在这里插入图片描述

3、海图资源加载

在这里插入图片描述
如果你没听劝,你会发现你的陆地不翼而飞,别急,下载官网资charts里的资源。
下载好解压到D:\OpenCPN_VS\opencpn\data\gshhs目录下。
删除D:\OpenCPN_VS\opencpn\build\Debug下的opencpn.ini、*.xml、opencpn.log 文件,在sln中重新生成解决方案。
在这个界面停住!!添加底图资源文件目录为D:\OpenCPN_VS\opencpn\data\gshhs!!
在这个界面停住!!添加底图资源文件目录为D:\OpenCPN_VS\opencpn\data\gshhs!!
在这个界面停住!!添加底图资源文件目录为D:\OpenCPN_VS\opencpn\data\gshhs!!

在这里插入图片描述
相信到这里你已经编译出自己的OpenCPN了。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值