Integrating Kanzi Monitor as a prebuilt library¶
You can integrate Kanzi Monitor as a prebuilt library into your Kanzi application project.
The prebuilt libraries are located in the <KanziWorkspace>/Engine/plugins/monitor/lib directory.
Integrating to Windows projects with CMake and Visual Studio¶
To integrate Kanzi Monitor as a library to a Windows application project:
In the top-level
CMakeLists.txt, add the Kanzi Monitor detection, linking, and configuration block after theadd_executable(${PROJECT_NAME} ...)call. The block links against the${PROJECT_NAME}target, so the target must already exist.Pass
-DKANZI_LINK_KZMONITOR=ONwhen generating the CMake project to enable Kanzi Monitor.Note
Projects created with Kanzi 4.1.0 or newer already contain an equivalent
if(KANZI_LINK_KZMONITOR)block in the applicationCMakeLists.txtgenerated by Kanzi Studio (see the application templates under<KanziWorkspace>/Templates). If your project was created with Kanzi 4.1.0, you do not need to add the block below — just pass-DKANZI_LINK_KZMONITOR=ONto enable Kanzi Monitor. Add the block manually only if your project predates 4.1.0, or if its generatedCMakeLists.txtdoes not already contain it.Note
This block ends with
target_link_libraries(${PROJECT_NAME} ...), so place it after theadd_executable(${PROJECT_NAME} ...)call that creates the target, not immediately afterinclude(kanzi-common). Placing it before the target exists fails CMake configuration with “Cannot specify link libraries for target … which is not built by this project.”if(KANZI_LINK_KZMONITOR) set(PLUGIN_COMMON_SETUP cmake/common-setup.cmake) # KANZI_MONITOR_ROOT can be set explicitly: cmake -DKANZI_MONITOR_ROOT=<path> # If not set, auto-detection from known locations is attempted. if(NOT KANZI_MONITOR_ROOT) if(EXISTS ${PROJECT_SOURCE_DIR}/../../../Engine/plugins/monitor/${PLUGIN_COMMON_SETUP}) set(KANZI_MONITOR_ROOT ${PROJECT_SOURCE_DIR}/../../../Engine/plugins/monitor) elseif(DEFINED ENV{KANZI_HOME} AND EXISTS "$ENV{KANZI_HOME}/Engine/plugins/monitor/${PLUGIN_COMMON_SETUP}") set(KANZI_MONITOR_ROOT "$ENV{KANZI_HOME}/Engine/plugins/monitor") endif() if(NOT KANZI_MONITOR_ROOT) message(FATAL_ERROR "Cannot find Monitor plugin root directory. " "Pass -DKANZI_MONITOR_ROOT=<path> to CMake, set the KANZI_HOME " "environment variable to your Kanzi workspace root, or install " "the plugin under 'WORKSPACE/Engine/plugins'.") endif() endif() include(${KANZI_MONITOR_ROOT}/${PLUGIN_COMMON_SETUP}) include(${KANZI_MONITOR_ROOT}/cmake/monitor-config.cmake) target_link_libraries(${PROJECT_NAME} ${KANZI_MONITOR_NAMESPACE}kzmonitor) endif()
Append the Kanzi Monitor plugin DLL path to the debugger environment variable of Visual Studio.
This enables the Visual Studio debugger to locate the plugin DLL path automatically when launching the debugger.
# Add the Kanzi Monitor library location to the VS debugger environment. set_target_properties(<ProjectName> PROPERTIES VS_DEBUGGER_ENVIRONMENT "${KANZI_VS_DEBUGGER_ENVIRONMENT};${KANZI_MONITOR_ROOT}/${PLATFORM_LIBRARY_DIR}")
(Optional) If the Kanzi Monitor plugin is not added to the Kanzi Studio project, enable the plugin by adding it to the
ModuleNamesconfiguration option inapplication.cfg:ModuleNames = "kzmonitor"
(Optional) Enable the application executable to use the Kanzi Monitor C++ API.
In the
CMakeLists.txtfor the application executable, add the Kanzi Monitor headers to the include directories inside theif(KANZI_LINK_KZMONITOR)block:# Add the Kanzi Monitor include path. target_include_directories(${PROJECT_NAME} PRIVATE ${KANZI_MONITOR_ROOT}/include)
(Optional) To enable rendering statistics and GPU object counts in Release and Profiling builds, enable the Kanzi graphics statistics layer. You can do this in either
application.cfg:GraphicsStatisticEnabled = true
or in
onConfigure():configuration.graphicsStatisticsEnabled = true;
In Debug builds, the graphics statistics layer is enabled by default. Without this setting, the Kanzi Monitor still reports FPS, frame time, resource counts, and memory usage, but per-frame rendering counters and GPU object counts remain zero.
See GraphicsStatisticEnabled in the Kanzi application configuration reference.
Regenerate the project from the updated CMake files.
For example, run the
generate_cmake_vs2022_solution.batscript.Make sure that the application has the necessary privileges to write files and open TCP sockets.
Integrating to Android projects with Gradle, CMake, and Android Studio¶
Note
On Android, you must link Kanzi Monitor with target_link_libraries at build time.
Dynamic plugin loading via ModuleNames alone does not work on Android because RTTI type information is not shared across .so library boundaries, which prevents the Kanzi Engine from recognizing the plugin module.
To integrate Kanzi Monitor as a library to an Android application project:
In the
kanzinative/build.gradle, enable Kanzi Monitor linking:Note
In Gradle projects, enable Kanzi Monitor linking by passing
-DKANZI_LINK_KZMONITOR=ONin thecmake { arguments }block of thekanzinative/build.gradle:cmake { // Enable to add Monitor plugin to the AAR. arguments "-DKANZI_LINK_KZMONITOR=ON" }
In the
CMakeLists.txt, add the Kanzi Monitor detection and linking block after theadd_executable(${PROJECT_NAME} ...)call:Note
Projects created with Kanzi 4.1.0 or newer already contain an equivalent
if(KANZI_LINK_KZMONITOR)block in the applicationCMakeLists.txtgenerated by Kanzi Studio (see the application templates under<KanziWorkspace>/Templates). If your project was created with Kanzi 4.1.0, you do not need to add the block below — just pass-DKANZI_LINK_KZMONITOR=ONto enable Kanzi Monitor. Add the block manually only if your project predates 4.1.0, or if its generatedCMakeLists.txtdoes not already contain it.Note
This block ends with
target_link_libraries(${PROJECT_NAME} ...), so place it after theadd_executable(${PROJECT_NAME} ...)call that creates the target, not immediately afterinclude(kanzi-common). Placing it before the target exists fails CMake configuration with “Cannot specify link libraries for target … which is not built by this project.”if(KANZI_LINK_KZMONITOR) set(PLUGIN_COMMON_SETUP cmake/common-setup.cmake) # KANZI_MONITOR_ROOT can be set explicitly: cmake -DKANZI_MONITOR_ROOT=<path> # If not set, auto-detection from known locations is attempted. if(NOT KANZI_MONITOR_ROOT) if(EXISTS ${PROJECT_SOURCE_DIR}/../../../Engine/plugins/monitor/${PLUGIN_COMMON_SETUP}) set(KANZI_MONITOR_ROOT ${PROJECT_SOURCE_DIR}/../../../Engine/plugins/monitor) elseif(DEFINED ENV{KANZI_HOME} AND EXISTS "$ENV{KANZI_HOME}/Engine/plugins/monitor/${PLUGIN_COMMON_SETUP}") set(KANZI_MONITOR_ROOT "$ENV{KANZI_HOME}/Engine/plugins/monitor") endif() if(NOT KANZI_MONITOR_ROOT) message(FATAL_ERROR "Cannot find Monitor plugin root directory. " "Pass -DKANZI_MONITOR_ROOT=<path> to CMake, set the KANZI_HOME " "environment variable to your Kanzi workspace root, or install " "the plugin under 'WORKSPACE/Engine/plugins'.") endif() endif() include(${KANZI_MONITOR_ROOT}/${PLUGIN_COMMON_SETUP}) include(${KANZI_MONITOR_ROOT}/cmake/monitor-config.cmake) target_link_libraries(${PROJECT_NAME} ${KANZI_MONITOR_NAMESPACE}kzmonitor) endif()
If the Kanzi Monitor plugin is not added to the Kanzi Studio project, enable the plugin by adding it to the
ModuleNamesconfiguration option inapplication.cfg:ModuleNames = "kzmonitor"
This is the recommended registration method for Android because it works with both Kanzi application frameworks:
appfw (Basic Application template) – The application has a C++
ExampleApplicationsubclass, so you can alternatively setconfiguration.moduleNames = { "kzmonitor" };inonConfigure().droidfw (Android Application template) – The application lifecycle is Java-driven and the C++ source is a stub, so
application.cfgis the only viable registration path.
(Optional) To enable rendering statistics and GPU object counts in Release and Profiling builds, enable the Kanzi graphics statistics layer. You can do this in
application.cfg:GraphicsStatisticEnabled = true
or in
onConfigure()(appfw projects only):configuration.graphicsStatisticsEnabled = true;
In Debug builds, the graphics statistics layer is enabled by default. Without this setting, the Kanzi Monitor still reports FPS, frame time, resource counts, and memory usage, but per-frame rendering counters and GPU object counts remain zero.
See GraphicsStatisticEnabled in the Kanzi application configuration reference.
Regenerate the project from the updated CMake files.
For example, update your Android Studio and Gradle environment with the changes that you made to the CMake files.
Make sure that the application has the necessary privileges to write files and open TCP sockets. See Setting permissions on Android.