系列索引:AFSIM入门教程索引
在AFSIM入门教程03.01:Windows下编译中完成了Windows下编译,但是源码中有指定版本的依赖库。本着研究原则,更新其版本。
首先尝试将其修改为系统提供的依赖。但是这些依赖由CMakeList.txt管理,修改起来比较麻烦。所以只能手动编译源码。
除非你十分熟悉CMake和AFSIM,否则不要轻易修改代码结构,只能在现有结构和规则下微调。
官方依赖库
进入swdev/dependencies/3rd_party
目录,可以看到官方提供的指定版本的依赖库。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| D:\AFSIM\TRUNK\SWDEV\DEPENDENCIES\3RD_PARTY ├─curl ├─freetype ├─gdal ├─geos ├─gsl ├─gtest ├─jpeg ├─libpng ├─osg ├─osgEarth ├─proj ├─protobuf ├─pybind11 ├─qt ├─sdl ├─sqlite ├─tiff ├─tinyxml2 ├─yasm ├─zlib └─zmq
|
随便打开一个文件夹,查看内容。
1 2 3 4 5 6 7
| Directory: D:\AFSIM\trunk\swdev\dependencies\3rd_party\sqlite
Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 02/17/2022 10:50:31 PM 3202133 sqlite-3.32.3-x64-vs2015.tar.gz -a--- 02/17/2022 10:50:31 PM 3278697 sqlite-3.32.3-x64-vs2017.tar.gz -a--- 07/10/2025 10:06:10 PM 1553092 sqlite-3.50.2-x64-vs2017.tar.gz
|
官方提供的库基于VS2015/2017编译,64位,压缩包格式为tar.gz,版本应该是当时常用的版本,当时现在已经过时了。
双击打开压缩包,查看内容,基本结构如下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| ├─debug │ ├─bin │ └─lib │ ├─cmake │ │ └─CURL │ └─pkgconfig ├─include │ └─curl ├─license └─release ├─bin └─lib ├─cmake │ └─CURL └─pkgconfig
|
依赖库使用
打开源码目录,搜索# Configure the 3rd_party
,可以看到调用第三方库的代码。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
set(SWDEV_GDAL_PACKAGE "gdal-3.3.2" CACHE STRING "" FORCE) set(SWDEV_GEOS_PACKAGE "geos-3.5.1" CACHE STRING "" FORCE) set(SWDEV_QT_PACKAGE "qt-5.12.11" CACHE STRING "" FORCE) set(SWDEV_OSG_EARTH_PACKAGE "osgEarth-2.10.1" CACHE STRING "" FORCE) set(SWDEV_OSG_PACKAGE "osg-3.6.3" CACHE STRING "" FORCE) set(SWDEV_TIFF_PACKAGE "tiff-4.3.0" CACHE STRING "" FORCE) set(SWDEV_SDL_PACKAGE "sdl-2.0.16" CACHE STRING "" FORCE) set(SWDEV_PROJ_PACKAGE "proj-8.1.1" CACHE STRING "" FORCE)
mark_as_advanced(FORCE SWDEV_GDAL_PACKAGE) mark_as_advanced(FORCE SWDEV_GEOS_PACKAGE) mark_as_advanced(FORCE SWDEV_SDL_PACKAGE) mark_as_advanced(FORCE SWDEV_QT_PACKAGE) mark_as_advanced(FORCE SWDEV_OSG_EARTH_PACKAGE) mark_as_advanced(FORCE SWDEV_OSG_PACKAGE) mark_as_advanced(FORCE SWDEV_TIFF_PACKAGE) mark_as_advanced(FORCE SWDEV_PROJ_PACKAGE)
|
可以发现,官方提供不少依赖库,但是并没有完全使用。
tiff
以tiff库作为示例,更新官方依赖库版本。并以此为基准更新其他库。
编译
下载tiff4.7.0源码,解压、编译Release/Debug库。
结构
按照压缩包的结构,压缩打包编译的库tiff-4.7.0-x64-vs2022.tar.gz,对于没有的库就直接忽略。
将打包的库放置于swdev/dependencies/3rd_party/tiff
目录下。
文件修改
mystic/exec/source/CMakeLists.txt
修改tiff版本。
tools/3rd_party-cmake/tiff-4.3.0.cmake
修改文件名中的tiff版本。
warlock/warlock_exec/source/CMakeLists.txt
修改tiff版本。
wizard/CMakeLists.txt
修改tiff版本。
编译AFSIM
配置CMake工程
提示错误
1 2 3 4 5 6 7 8 9 10
| -- Calculating SHA512 hash for: D:/AFSIM/trunk/swdev/dependencies/3rd_party/qt/qt-5.12.11-x64-vs2017.tar.gz -- Calculating SHA512 hash for: D:/AFSIM/trunk/swdev/dependencies/3rd_party/gdal/gdal-3.3.2-x64-vs2017.tar.gz -- Calculating SHA512 hash for: D:/AFSIM/trunk/swdev/dependencies/3rd_party/geos/geos-3.5.1-x64-vs2017.tar.gz -- Calculating SHA512 hash for: D:/AFSIM/trunk/swdev/dependencies/3rd_party/osgEarth/osgEarth-2.10.1-x64-vs2017.tar.gz -- Calculating SHA512 hash for: D:/AFSIM/trunk/swdev/dependencies/3rd_party/osg/osg-3.6.3-x64-vs2017.tar.gz -- Calculating SHA512 hash for: D:/AFSIM/trunk/swdev/dependencies/3rd_party/proj/proj-8.1.1-x64-vs2017.tar.gz CMake Warning at tools/3rd_party-cmake/config.cmake:146 (message): Cannot locate package tiff-4.7.0 Call Stack (most recent call first): mystic/exec/source/CMakeLists.txt:51 (swdev_acquire_packages)
|
可以看到其他库支持计算sha512值,tiff-4.7.0库没有找到。
怀疑和文件名中的vs2022
有关。搜索代码关键词,找到以下内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| if(MSVC) if(MSVC_VERSION GREATER 1900) set(SWDEV_SYS_SUFFIX vs2017) elseif(MSVC_VERSION EQUAL 1900) set(SWDEV_SYS_SUFFIX vs2015) elseif(MSVC_VERSION EQUAL 1800) set(SWDEV_SYS_SUFFIX vs2013) elseif(MSVC_VERSION EQUAL 1700) set(SWDEV_SYS_SUFFIX vs2012) elseif(MSVC_VERSION EQUAL 1600) set(SWDEV_SYS_SUFFIX vs2010) else() message(WARNING "${MSVC_VERSION} not recognized for 3rd party packages.") endif() else(MSVC) set(SWDEV_SYS_SUFFIX ln4) endif(MSVC)
|
官方默认最高使用VS2017。
所以这里有两种解决方法:
- 一次性更新所有依赖库为VS2022,并修改默认字符串。
- 修改文件名。
这里只是测试,就只修改文件名。
然后编译流程可以直接走完。
至此,tiff库更新成功。接下来更新其他库。