AFSim学习-ubuntu下编译mission

1 进入AFSim源码文件并生成编译所需文件

新建文件夹并配置。

bash 复制代码
mkdir -p buil
cmake -S src -B buil

cmake -S 源码目录 -B 编译目录

生成编译所需的文件

打印的输出:

  1. CMake 自己的版本
  2. 检测 C 编译
    。。。
bash 复制代码
-- CMAKE_VERSION: 3.16.3
-- The C compiler identification is GNU 9.4.0
-- The CXX compiler identification is GNU 9.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found Git: /usr/bin/git (found version "2.25.1") 
-- AFSIM Version: 2.9.0
-- AFSIM Release Version: 2.9.0 02-25-2022
-- Could NOT find Sphinx (missing: Sphinx-build_EXECUTABLE Sphinx-apidoc_EXECUTABLE) 
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Check if compiler accepts -pthread
-- Check if compiler accepts -pthread - yes
-- Found Threads: TRUE  
Defaulting CMAKE_BUILD_TYPE to Release
-- Found GCC. Major version 9, minor version 4
-- Calculating SHA512 hash for: /home/ubuntu/afsim_ws/afsim-src/afsim/swdev/dependencies/3rd_party/gtest-1.8.0-x64-lnx.tar.gz
-- Found GTest: /home/ubuntu/afsim_ws/afsim-src/afsim/swdev/3rd_party/gtest-1.8.0-x64-lnx/lib/libgtest.so  
-- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY
-- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY - Success
-- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY
-- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY - Success
-- Performing Test COMPILER_HAS_DEPRECATED_ATTR
-- Performing Test COMPILER_HAS_DEPRECATED_ATTR - Success
-- Configuring sensor_plot_lib
-- Configuring wsf_cyber
-- Configuring wsf_grammar_check
-- Configuring wsf_l16
-- Configuring wsf_mil
-- Configuring wsf_mil_parser
-- Configuring wsf_mtt
-- Configuring wsf_nx
-- Configuring wsf_parser
-- Configuring wsf_ripr
-- Configuring wsf_space
-- Configuring wsf_weapon_server
-- Configuring engage
-- Configuring evt_reader
-- Configuring mission
-- Configuring mover_creator
-- Configuring mystic
-- Configuring post_processor
-- Configuring sensor_plot
-- Configuring warlock
-- Configuring weapon_tools
-- Configuring wizard
-- Configuring wsf_air_combat
-- Configuring wsf_alternate_locations
-- Configuring wsf_annotation
-- Configuring wsf_argo8
-- Configuring wsf_brawler
-- Configuring wsf_coverage
-- Configuring wsf_fires
-- Configuring wsf_iads_c2
-- Configuring wsf_multiresolution
-- Configuring wsf_oms_uci
-- Configuring wsf_p6dof
-- Configuring wsf_scenario_analyzer
-- Configuring wsf_scenario_analyzer_iads_c2
-- Configuring wsf_simdis
-- Configuring wsf_six_dof
-- Configuring wsf_sosm
-- Found Python3: /usr/local/bin/python3.8 (found version "3.8.10") found components: Interpreter 
-- Calculating SHA512 hash for: /home/ubuntu/afsim_ws/afsim-src/afsim/swdev/dependencies/3rd_party/qt-5.12.11-x64-lnx.tar.gz
-- Found OpenGL: /usr/lib/x86_64-linux-gnu/libOpenGL.so   
-- Calculating SHA512 hash for: /home/ubuntu/afsim_ws/afsim-src/afsim/swdev/dependencies/3rd_party/gdal-3.3.2-x64-lnx.tar.gz
-- Calculating SHA512 hash for: /home/ubuntu/afsim_ws/afsim-src/afsim/swdev/dependencies/3rd_party/geos-3.5.1-x64-lnx.tar.gz
-- Calculating SHA512 hash for: /home/ubuntu/afsim_ws/afsim-src/afsim/swdev/dependencies/3rd_party/osgEarth-2.10.1-x64-lnx.tar.gz
-- Calculating SHA512 hash for: /home/ubuntu/afsim_ws/afsim-src/afsim/swdev/dependencies/3rd_party/osg-3.6.3-x64-lnx.tar.gz
-- Calculating SHA512 hash for: /home/ubuntu/afsim_ws/afsim-src/afsim/swdev/dependencies/3rd_party/proj-8.1.1-x64-lnx.tar.gz
-- Using resource files from directory /home/ubuntu/afsim_ws/afsim-src/afsim/swdev/dependencies/resources
-- Configuring WKF Plugin CoverageOverlay
-- Configuring WKF Plugin MapDisplay
-- Configuring WKF Plugin MapHoverInfo
-- Configuring WKF Plugin ModelBrowser
-- Configuring WKF Plugin Performance
-- Configuring WKF Plugin PositionConverterTool
-- Configuring WKF Plugin TerrainTools
-- Configuring WKF Plugin TetherView
-- Configuring WKF Plugin UnitConverterTool
-- Configuring WKF Plugin Visibility
-- Configuring MYSTIC Plugin ResultAcesDisplay
-- Configuring MYSTIC Plugin ResultAirCombatVisualization
-- Configuring MYSTIC Plugin ResultAnnotation
-- Configuring MYSTIC Plugin ResultAuxData
-- Configuring MYSTIC Plugin ResultBattleManagement
-- Configuring MYSTIC Plugin ResultBehaviorAnalysisTool
-- Configuring MYSTIC Plugin ResultCommVis
-- Configuring MYSTIC Plugin ResultComment
-- Configuring MYSTIC Plugin ResultDataAirCombat
-- Configuring MYSTIC Plugin ResultDataAnnotation
-- Configuring MYSTIC Plugin ResultDataCyber
-- Configuring MYSTIC Plugin ResultDataP6Dof
-- Configuring MYSTIC Plugin ResultDataSixDOF
-- Configuring MYSTIC Plugin ResultDataSpace
-- Configuring MYSTIC Plugin ResultDataWk
-- Configuring MYSTIC Plugin ResultDetectionReport
-- Configuring MYSTIC Plugin ResultEngagementAnalysis
-- Configuring MYSTIC Plugin ResultEventMarker
-- Configuring MYSTIC Plugin ResultHeadDownView
-- Configuring MYSTIC Plugin ResultHeadUpView
-- Configuring MYSTIC Plugin ResultInteractionLines
-- Configuring MYSTIC Plugin ResultInteractionPlots
-- Configuring MYSTIC Plugin ResultMerger
-- Configuring MYSTIC Plugin ResultOrbit
-- Configuring MYSTIC Plugin ResultOrbitalData
-- Configuring MYSTIC Plugin ResultP6DOFData
-- Configuring MYSTIC Plugin ResultPlatformBrowser
-- Configuring MYSTIC Plugin ResultPlatformData
-- Configuring MYSTIC Plugin ResultPlatformHistory
-- Configuring MYSTIC Plugin ResultProjector
-- Configuring MYSTIC Plugin ResultQuantumTaskerData
-- Configuring MYSTIC Plugin ResultRelativeGeometry
-- Configuring MYSTIC Plugin ResultRoute
-- Configuring MYSTIC Plugin ResultSatelliteTether
-- Configuring MYSTIC Plugin ResultScriptDataFeed
-- Configuring MYSTIC Plugin ResultSensorVolumes
-- Configuring MYSTIC Plugin ResultSituationAwarenessDisplay
-- Configuring MYSTIC Plugin ResultSixDOF_Data
-- Configuring MYSTIC Plugin ResultStatistics
-- Configuring MYSTIC Plugin ResultTimeController
-- Configuring MYSTIC Plugin ResultTracks
-- Configuring MYSTIC Plugin ResultVaScenarioManager
-- Configuring MYSTIC Plugin ResultVisualEffects
-- Configuring MYSTIC Plugin ResultWsfDraw
-- Configuring MYSTIC Plugin ResultZones
-- Calculating SHA512 hash for: /home/ubuntu/afsim_ws/afsim-src/afsim/swdev/dependencies/3rd_party/sdl-2.0.16-x64-lnx.tar.gz
-- Configuring WARLOCK Plugin AcesDisplay
-- Configuring WARLOCK Plugin AdHocScriptBrowser
-- Configuring WARLOCK Plugin AirToAirVisualization
-- Configuring WARLOCK Plugin Annotation
-- Configuring WARLOCK Plugin ApplicationLauncher
-- Configuring WARLOCK Plugin Astrolabe
-- Configuring WARLOCK Plugin BattleManagement
-- Configuring WARLOCK Plugin Chat
-- Configuring WARLOCK Plugin CommVis
-- Configuring WARLOCK Plugin Comment
-- Configuring WARLOCK Plugin CreatePlatform
-- Configuring WARLOCK Plugin CyberEngagementBrowser
-- Configuring WARLOCK Plugin CyberEngagementController
-- Configuring WARLOCK Plugin DemoMode
-- Configuring WARLOCK Plugin DialogBuilder
-- Configuring WARLOCK Plugin EventMarker
-- Configuring WARLOCK Plugin HeadDownView
-- Configuring WARLOCK Plugin HeadUpView
-- Configuring WARLOCK Plugin Interactions
-- Configuring WARLOCK Plugin Joystick
-- Configuring WARLOCK Plugin Log
-- Configuring WARLOCK Plugin NetworkBrowser
-- Configuring WARLOCK Plugin NetworkLog
-- Configuring WARLOCK Plugin Orbit
-- Configuring WARLOCK Plugin OrbitalData
-- Configuring WARLOCK Plugin P6dofController
-- Configuring WARLOCK Plugin P6dofData
-- Configuring WARLOCK Plugin P6dofTuner
-- Configuring WARLOCK Plugin PlatformBrowser
-- Configuring WARLOCK Plugin PlatformData
-- Configuring WARLOCK Plugin PlatformHistory
-- Configuring WARLOCK Plugin PlatformMovement
-- Configuring WARLOCK Plugin PlatformPartBrowser
-- Configuring WARLOCK Plugin Projector
-- Configuring WARLOCK Plugin RelativeGeometry
-- Configuring WARLOCK Plugin SatelliteTether
-- Configuring WARLOCK Plugin Scoreboard
-- Configuring WARLOCK Plugin ScriptBrowser
-- Configuring WARLOCK Plugin SensorController
-- Configuring WARLOCK Plugin SensorVolumes
-- Configuring WARLOCK Plugin SimController
-- Configuring WARLOCK Plugin SituationAwarenessDisplay
-- Configuring WARLOCK Plugin SixDofData
-- Configuring WARLOCK Plugin SixDofTuner
-- Configuring WARLOCK Plugin TaskAssigner
-- Configuring WARLOCK Plugin TaskStatus
-- Configuring WARLOCK Plugin TrackDetailsDisplay
-- Configuring WARLOCK Plugin Tracks
-- Configuring WARLOCK Plugin VisualEffects
-- Configuring WARLOCK Plugin WeaponBrowser
-- Configuring WARLOCK Plugin WsfDraw
-- Configuring WARLOCK Plugin WsfPrompt
-- Configuring WARLOCK Plugin ZoneBrowser
-- Calculating SHA512 hash for: /home/ubuntu/afsim_ws/afsim-src/afsim/swdev/dependencies/3rd_party/sqlite-3.32.3-x64-lnx.tar.gz
-- Configuring WIZARD Plugin WizACO_Importer
-- Configuring WIZARD Plugin WizCRDImporter
-- Configuring WIZARD Plugin WizColorUtils
-- Configuring WIZARD Plugin WizCommVisPlugin
-- Configuring WIZARD Plugin WizCommandChainBrowser
-- Configuring WIZARD Plugin WizDemoBrowser
-- Configuring WIZARD Plugin WizEngage
-- Configuring WIZARD Plugin WizErrorList
-- Configuring WIZARD Plugin WizEventOutput
-- Configuring WIZARD Plugin WizLogServer
-- Configuring WIZARD Plugin WizMapAnnotation
-- Configuring WIZARD Plugin WizMapRoute
-- Configuring WIZARD Plugin WizMapUtils
-- Configuring WIZARD Plugin WizModelImport
-- Configuring WIZARD Plugin WizMysticLauncher
-- Configuring WIZARD Plugin WizOSMConverter
-- Configuring WIZARD Plugin WizPartManager
-- Configuring WIZARD Plugin WizPatternVisualization
-- Configuring WIZARD Plugin WizPlatformBrowser
-- Configuring WIZARD Plugin WizPlatformData
-- Configuring WIZARD Plugin WizProjectBrowser
-- Configuring WIZARD Plugin WizRouteBrowser
-- Configuring WIZARD Plugin WizSIMDIS
-- Configuring WIZARD Plugin WizSPLAT
-- Configuring WIZARD Plugin WizScenarioAnalyzer
-- Configuring WIZARD Plugin WizScenarioImporter
-- Configuring WIZARD Plugin WizSimulationManager
-- Configuring WIZARD Plugin WizSpaceTools
-- Configuring WIZARD Plugin WizTablePlotter
-- Configuring WIZARD Plugin WizTaskList
-- Configuring WIZARD Plugin WizTypeBrowser
-- Configuring WIZARD Plugin WizUnitConversion
-- Configuring WIZARD Plugin WizZoneEditor
-- Calculating SHA512 hash for: /home/ubuntu/afsim_ws/afsim-src/afsim/swdev/dependencies/3rd_party/tinyxml2-7.1.0-x64-lnx.tar.gz
-- Configuring done
-- Generating done
-- Build files have been written to: /home/ubuntu/afsim_ws/afsim-src/afsim/swdev/buil

2 编译通用工具库

wsf_util:工具库

wsf:仿真核心库

wsf_parser:场景文件解析

mission :仿真运行程序

bash 复制代码
cmake --build build --target wsf_util -j2
cmake --build build --target wsf -j2
cmake --build build --target wsf_parser -j2
cmake --build build --target mission -j2

完成之后可以在build文件夹里看到执行文件

build/mission

可以使用./build/mission启动。

检查动态库是否都能找到:

bash 复制代码
ldd build/mission | grep "not found"

如果没有输出,说明依赖库都能找到。

3 编写demo并运行

新建一个txt,比如放在project文件夹下。

bash 复制代码
# Hello World Scenario

end_time 10 sec

execute at_time 0.1 sec absolute
    writeln("Hello World at 0.1 sec");
end_execute

execute at_time 2 sec absolute
    writeln("Now simulation time is around 2 sec");
end_execute

execute at_time 5 sec absolute
    writeln("Now simulation time is around 5 sec");
end_execute

跑到 10 秒结束;

在仿真时间 0.1 秒执行一次输出;

在仿真时间 2秒执行一次输出;

在仿真时间 5 秒执行一次输出;

执行:

bash 复制代码
./build/mission -mi 1 /home/ubuntu/afsim_ws/project1/6-hello/hello_world.txt

输出:

bash 复制代码
mission:
    WSF Version: 2.9.0 02-25-2022
    Built: Jun 30 2026 18:34:10
Plugin API version info:
    Version: 2.9
    Compiler: lnx_90400_64bit_release-hwe
Extensions Included: 
    sensor_plot_lib, wsf_cyber, wsf_grammar_check, wsf_l16, wsf_mil, wsf_mil_parser, wsf_mtt, wsf_nx, wsf_parser, wsf_ripr, wsf_space, wsf_weapon_server, wsf_simdis

Loading simulation input.
Loading simulation input complete.
    Elapsed Wall Clock Time: 0.00052
    Elapsed Processor Time : 0
Initializing simulation.
Initializing simulation complete.
    Elapsed Wall Clock Time: 0.001257
    Elapsed Processor Time : 0
Starting simulation.
Hello World at 0.1 sec
Now simulation time is around 2 sec
T = 2.000
Now simulation time is around 5 sec
T = 5.000
T = 10.001
Simulation complete
    Elapsed Wall Clock Time: 8.2e-05
    Elapsed Processor Time : 0