本文介绍了OpenCPN 5.0.0版本的编译过程,官方网站给出了一个流程,但是亲测后发现还是有一些小坑,官方给出的命令行操作由于网络(可能需要科学上网)不一定畅通,导致难以下载成功,在此把本人成功配置并编译的过程分享出来,让需要的人少走弯路。

目标

基于VS2017(对应VC15)编译最新版OpenCPN的 debugrealease版本。

参考资料

  1. OpenCPN Github
  2. OpenCPN Manuals - Compiling on Windows
  3. OpenCPN Manuals - Compile 2015 VS Community Workflow

下载汇总

  1. Visual Studio Community 2017 (version 15.9)
  2. Git
  3. CMake
  4. POedit
  5. NSIS
  6. 7-Zip
  7. OpenCPN 预编译Windows依赖 - OpenCPN_buildwin-4.99a.7z
  8. 界面库源码 - wxWidgets 3.1.2.zip
  9. 编译 Debug 版本的 batch 复制命令 - copyfiles.bat.doc
  10. 资源汇总
  • 资源汇总-OpenCPN源码含所有submodule(1/2)
  • 资源汇总-其他必需的安装包及库文件(2/2)。

有些资源下载的很慢,如果实在下载不到,可以用我提供的,源码文件太大超过 440M 只能分成两个资源,每个只要2分,赚个辛苦钱我也好下点资源,谢谢支持。


编译流程

  1. 安装VS2017,这一步就不展开了,OpenCPN 官网提到如下要求,注意勾选即可。

Install and select the workload Desktop development with C++ and include component Windows XP support for C++.
Also include the appropriate Windows x SDK component. Generally install the most current version, Windows 10 preferred.

  1. 必须】安装 GitCMake, 对应官网都有安装包,找最新的版本下载来安装就好了。
  2. 必须】安装并 POedit, 配置系统环境变量,在PATH中添加

C:\Program Files (x86)\Poedit\GettextTools\bin

  1. 非必须】安装NSIS, OpenCPN提供的网址里的 download 指向错误,在 sourceforge上找到了下载链接,见下载汇总,这个主要用于制作安装包的,如果只是用调试版,暂时用不上这个。
  2. 不重要】安装 7-Zip, 我是把 32 位和 64 位的都安装了,这个主要是解压下载汇总中的预编译依赖压缩包用的,有其他常用的解压工具的话也不是很需要这个。
  3. 下载 wxWidgets 3.1.2源码并编译。
  • 【注意】虽然wxWidgets官网提供了 Win下预编译好的库,但是只有 release版本,我们这里直接从源码编译debugrelease版本的库,下载官方的最新源码压缩包,这里一定注意,下载这个Zip文件。利用git clone和或下载下面的source code中都没有submodule,虽然利用gitgit submodule update命令理论上可以下载到这些子模块,但是亲测由于网络原因几乎无法成功下载,所以还是老实的去上面这里下载。下载Zip完成后,注意有些教程可能说到进入\wxWidgets-3.1.2\build\msw然后找到wx_vc15.sln的工程打开后生成库,我在这里走了弯路,经过测试,这么做会报错,并且不好解决,还是严格按照官网的配置流程来,打开x86 Native Tools Command Prompt for VS 2017后输入如下命令:

cd xx/wxWidgets-3.1.2/build/msw//改到自己的路径
nmake /f makefile.vc BUILD=release SHARED=1 CXXFLAGS=/D_USING_V141_SDK71_ CFLAGS=/D_USING_V141_SDK71_ LDFLAGS=/SUBSYSTEM:WINDOWS,5.01
nmake /f makefile.vc BUILD=debug SHARED=1 CXXFLAGS=/D_USING_V141_SDK71_ CFLAGS=/D_USING_V141_SDK71_ LDFLAGS=/SUBSYSTEM:WINDOWS,5.01

  • 【提示】用Win+S弹出的搜索框中输入x86 Native后就会很容易找到x86 Native Tools Command Prompt for VS 2017
  • 随着一阵哗哗的输出,release版本的编译完了,按一下回车,继续debug的编译。编译完了后在\wxWidgets-3.1.2\lib\vcdll就能看到debugrelease版本的编译好的库。
  • 重要】编译结束后,设置系统环境变量 wxWIDGETS_ROOT_DIR路径为 wxWidgets源码的顶级目录。
  1. 下载 OpenCPN源码, 在你想放置OpenCPN源码的文件夹下,右键选择Git Bash Here, 复制下面的命令后回车就可以直接从github克隆到本地了:

git clone https://github.com/OpenCPN/OpenCPN

  1. 下载 预编译Windows依赖 - OpenCPN_buildwin-4.99a.7z,然后解压到\xx\OpenCPN\buildwin也就是复制到你 cloneOpenCPN源码目录中的 buildwin目录下。
  2. OpenCPN编译之Release版本的编译
  • 首先配置工程,打开x86 Native Tools Command Prompt for VS 2017进入\xx\OpenCPN\路径后输入如下命令:

cd xx\OpenCPN\//还是一样,换成你自己的路径
mkdir build
cd build
cmake -G "Visual Studio 15 2017" -T v141_xp ..

  • 完成后build中就生成了OpenCPN.sln工程文件,官网的编译命令如下:

cmake --build .
cmake --build . --config release
cmake --build . --config release --target package

  • 如果不采用命令行编译,也可以直接打开OpenCPN.sln工程进行编译,因为这里大概率会报错,用VS编译比较方便定位错误,我建议直接打开VS工程编译。打开 \build\OpenCPN.sln工程文件我们来跑一跑OpenCPN看看能不能运行起来。
  • 打开工程后,把opencpn右键设置为启动项目,我这里先选择的是Release(Win32)然后点击运行吧。不出所料,果然出现了一个错误,我们定位到报错行:

xx\OpenCPN\src\options.cpp(8867): error C2001: 常量中有换行符

  • 看起来是中文字符的问题,查了查资料发现改起来好像比较麻烦,这个字体应该表示繁体中文,我们先把它随便改成英文试一试,例如“正体字”改成“zhengti”(很随意的不要纠结),继续点击运行,看看还有没有错误没有解决。
  • 刚才字体的问题暂时解决了,但是出现了新的问题:
  • 这个就比较常见了,点击运行的时候提示缺少一些dll,一般是没有加入系统环境变量或者复制到对应的DebugRelease文件夹下,提示缺少一些wx相关的dll,那么大概率就是我们之前的编译好的界面库没有加入系统环境变量,虽然我们之前设置了 wxWIDGETS_ROOT_DIR这一变量,但是我们的dll文件在wxWidgets-3.1.2\lib\vc_dll\路径下,所以我们把这个路径加入系统环境变量PATH中。
  • 仔细检查官网步骤,其实还有一步配置:下载 Copyfiles.bat.doc(见下载汇总)并删去后缀名 .doc移动到\xx\OpenCPN\下面后执行copyfiles.bat(这步不做可能还是会缺几个dll)。
  • 做完上面两步,重启一下VS2017,再打开OpenCPN.sln,直接执行,果然成功了。
  1. OpenCPN编译之Debug版本的编译
  • OpenCPN.sln工程中的项目改成Debug(Win32)运行一下,一切都运行正常,那么试一下加断点吧:
  • 也没有出现什么问题,至此DebugRelease版本的OpenCPN都编译并测试完成了。

小结

  1. 其实,官网文档已经够用了,我这里大多也只是翻译了一遍,只要严格按照官网提供的步骤,一步一步进行是肯定能够编译成功的。
  2. 唯一出现的一点小问题就是最后缺少dll的问题,这个小问题凭借我们一般编译项目的经验就可以解决。
  3. 目前遗留的小问题是中文字符的问题,也是个麻烦事,暂时没去解决。
  4. 特别需要注意的是,如果对某一模块有指定版本,那么官网都给出了具体的版本号,比如界面库是3.1.2,在不熟练的情况下,第一次编译最好严格按照官网说明的版本进行,可能会少走弯路。
  5. 最后我把中间需要用到的安装包和库都放在一起(除了VS2017GitCMake),如果实在下不到,可以采用我提供的这些文件,不过,自己试一试走一遍流程,可能印象会更深刻。

VS2017 + Win10 下的 OpenCPN 5.0.0 编译过程小结相关推荐

  1. Win10 下Visual Studio 2017源码编译Paddle

    Win10 下Visual Studio 2017源码编译Paddle 1.准备工作 Visual Studio 2017 Python 3.8.10 CMake 3.22.0-rc2 熟悉官方文档: ...

  2. win10下pytorch-gpu安装以及CUDA详细安装过程

               win10下pytorch-gpu安装以及CUDA详细安装过程 1.Cuda的下载安装及配置 首先我们要确定本机是否有独立显卡.在计算机-管理-设备管理器-显示适配器中,查看是否 ...

  3. win10monkey安装教程_详解win10下pytorch-gpu安装以及CUDA详细安装过程

    1.Cuda的下载安装及配置 首先我们要确定本机是否有独立显卡.在计算机-管理-设备管理器-显示适配器中,查看是否有独立显卡. 可以看到本机有一个集成显卡和独立显卡NVIDIA GetForce GT ...

  4. win10下llvm的源码安装编译

    win10下llvm的源码安装编译 1.下载llvm源码 2.下载安装cmake 你好!如需转载请标明本文出处. 1.下载llvm源码 下载llvm源码:https://github.com/llvm ...

  5. 记第一次win10下安装、卸载ubuntu16.04的过程

    0.问题描述:在win10下安装完ubuntu后开机能选择进入ubuntu,点windows boot manager却进不去win10,只能按F12才能间接进去,找了很多方法,还是没能把引导程序改利 ...

  6. win10下安装tensorflow-gpu==1.11.0的详细教程

    20200313 更新 当前配置,用了3个月了,运行良好 系统:win10 显卡:Nvidia 1080Ti python:3.6.8 CUDA:9.0.176 cuDNN:7.0.5 tensorf ...

  7. win10下RTX 2080ti安装cuda10.0和cudnn7.6.5

    1 安装显卡驱动 在NVIDIA官网上下载显卡驱动,并进行安装 NVIDIA官网下载页面 2 安装cuda10.0 在cuda历史版本列表中下载cuda10.0 cuda10.0下载链接 下载完成后安 ...

  8. win10安装misql8_Win10下免安装版MySQL8.0.16的安装和配置教程图解

    1.MySQL8.0.16解压 其中dada文件夹和my.ini配置文件是解压后手动加入的,如下图所示 2.新建配置文件my.ini放在D:\Free\mysql-8.0.16-winx64目录下 [ ...

  9. 0.0 环境搭建 - PyTorch学习笔记

    机器学习Python编程环境:VSCode+Anaconda 机器学习Python编程环境:VSCode+Anaconda 安装conda,安装类型建议选择All Users这样后期不会出现权限的问题 ...

最新文章

  1. flask之flask_socketio
  2. 黑白棋子的移动(东方化改题+???)
  3. C++ std::condition_variable wait() wait_for() 区别
  4. 谷歌发布 iOS 黑客工具软件,或导致 iOS 11 被越狱
  5. 北通G3游戏手柄开箱体验,原来手游高手都是这么成就的
  6. ubuntu安装nginx详细步骤
  7. 20201009 Latex参考文献自动排序 \begin{thebibliography}
  8. Google hacking(谷歌语法)
  9. HTML+CSS简单漫画网页设计成品--(红猪(9页)带注释)
  10. 【计算机视觉】光照及阴影(持续更新中)
  11. Java8 Lambda表达式(三)Lambda表达式与Stream API
  12. JavaScript 触发浏览器页面全屏,某div区域全屏
  13. led灯串怎么摆造型_客厅四周走一圈led灯槽边带吊顶造型效果图
  14. java中关系运算符_Java 关系运算符
  15. gepc 骨架图算法Graph Embedded Pose Clustering
  16. 物联网Lora模块从入门到精通(八)Lora无线通信
  17. gcc之-imacros选项
  18. 分库分表真的适合你的系统吗?聊聊分库分表和NewSQL如何选择
  19. JavaScript:实现将字节数组转换为 base64 编码算法(附完整源码)
  20. 【HAL库】STM32CubeMX开发----STM32F407----LED灯实验

热门文章

  1. 项目管理具有的基本特点
  2. syzkaller 源码阅读笔记1(syz-extract syz-sysgen)
  3. 自学c语言多久能赚钱,我这样学C语言,一个月赚了2000元?
  4. SpringMVC 数据绑定全面示例(复杂对象,数组等)
  5. C语言字符串赋值的方法
  6. HTTP 错误 500.19,错误代码0x800700b7的解决办法
  7. android播放gif动画控件(例子)
  8. Matlab------------寻找峰值函数
  9. 服务器mtbf性能测试,云服务器 MTBF指标
  10. during怎么念_during怎么读音英语(during中文谐音)