diff --git a/.gitmodules b/.gitmodules
index 4ffb7d1..868f3ce 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -10,3 +10,6 @@
 [submodule "ios-cmake"]
 	path = ios-cmake
 	url = https://github.com/QuasarApp/ios-cmake.git
+[submodule "QtIosCMake"]
+	path = QtIosCMake
+	url = https://github.com/QuasarApp/QtIosCMake.git
diff --git a/QtIosCMake b/QtIosCMake
new file mode 160000
index 0000000..f75c053
--- /dev/null
+++ b/QtIosCMake
@@ -0,0 +1 @@
+Subproject commit f75c053f1a8b60c2194d6b032b2db4a2da8d26e4
diff --git a/QuasarAppCITargets.cmake b/QuasarAppCITargets.cmake
index 60c4d21..d4d65a1 100644
--- a/QuasarAppCITargets.cmake
+++ b/QuasarAppCITargets.cmake
@@ -67,6 +67,12 @@
 # - targetDir - Target dir for output apk file.
 # - extraLibs - list f the extra libraryes (like the openssl)
 #
+# addDeployIPA(name plist team_id targetDir)
+# - name - This is prefix of added subtarget (any word).
+# - plist - This is path to Info.plist file
+# - team_id - this is id of developer team
+# - targetDir - Target dir for output apk file.
+#
 # initDeploy() // Create a main deploy target for all addDeploy subtargets. This method need to call before invoiced of all addDeploy methods.
 #
 #
@@ -111,6 +117,10 @@ if (ANDROID)
     include(${CMAKE_CURRENT_LIST_DIR}/qt-android-cmake/AddQtAndroidApk.cmake)
 endif()
 
+if (IOS)
+    include(${CMAKE_CURRENT_LIST_DIR}/QtIosCMake/AddQtIosApp.cmake)
+endif()
+
 function(emptyTarget targetName)
 
     if(TARGET ${targetName})
@@ -397,6 +407,44 @@ function(addDeployQIF name sourceDir targetDir config)
 
 endfunction()
 
+function(addDeployIPA name plist team_id targetDir)
+
+    if(TARGET deployIPA${name})
+        message("the deployIPA${name} target already created!")
+        return()
+
+    endif(TARGET deployIPA${name})
+
+    add_qt_ios_app(createIPA${name} ${name}
+      NAME ${name}
+      BUNDLE_IDENTIFIER ${bundle_id}
+      LONG_VERSION ${QATERIALGALLERY_VERSION}.${QATERIALGALLERY_VERSION_TAG}
+      COPYRIGHT "QuasarApp 2022-2022"
+      ASSET_DIR "${CMAKE_CURRENT_SOURCE_DIR}/apple/Assets.xcassets"
+      CUSTOM_PLIST "${plist}"
+      CODE_SIGN_IDENTITY "iPhone Developer"
+      TEAM_ID "${team_id}"
+      ORIENTATION_PORTRAIT
+      ORIENTATION_PORTRAIT_UPDOWN
+      ORIENTATION_LANDSCAPE_LEFT
+      ORIENTATION_LANDSCAPE_RIGHT
+      IPA
+      UPLOAD_SYMBOL
+      VERBOSE
+    )
+
+    ADD_CUSTOM_TARGET(
+        deployIPA${name}
+        COMMAND ${CMAKE_COMMAND} -E copy *.ipa ${targetDir}
+        COMMENT "copy ipa: ${CMAKE_COMMAND} -E copy *.ipa ${targetDir}"
+        WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/
+        DEPENDS createIPA${name}
+
+    )
+
+
+endfunction()
+
 function(addDeployAPK name android_src targetDir extraLibs)
 
     if(TARGET deployAPK${name})
@@ -426,7 +474,7 @@ function(addDeployAPK name android_src targetDir extraLibs)
     ADD_CUSTOM_TARGET(
         deployAPK${name}
         COMMAND ${CMAKE_COMMAND} -E copy *.apk ${targetDir}
-        COMMENT "copt apk: ${CMAKE_COMMAND} -E copy *.apk ${targetDir}"
+        COMMENT "copy apk: ${CMAKE_COMMAND} -E copy *.apk ${targetDir}"
         WORKING_DIRECTORY ${QT_ANDROID_APP_BINARY_DIR}/build/outputs/apk/debug
         DEPENDS createAPK${name}
 
@@ -435,7 +483,7 @@ function(addDeployAPK name android_src targetDir extraLibs)
     ADD_CUSTOM_TARGET(
         deployAAB${name}
         COMMAND ${CMAKE_COMMAND} -E copy *.aab ${targetDir}
-        COMMENT "copt aab: ${CMAKE_COMMAND} -E copy *.aab ${targetDir}"
+        COMMENT "copy aab: ${CMAKE_COMMAND} -E copy *.aab ${targetDir}"
         WORKING_DIRECTORY ${QT_ANDROID_APP_BINARY_DIR}/build/outputs/bundle/release
         DEPENDS deployAPK${name}
 
@@ -477,7 +525,7 @@ function(addDeploySignedAPK name android_src aliase keystore keystorePass target
     ADD_CUSTOM_TARGET(
         deployAPK${name}
         COMMAND ${CMAKE_COMMAND} -E copy *.apk ${targetDir}
-        COMMENT "copt apk: ${CMAKE_COMMAND} -E copy *.apk ${targetDir}"
+        COMMENT "copy apk: ${CMAKE_COMMAND} -E copy *.apk ${targetDir}"
         WORKING_DIRECTORY ${QT_ANDROID_APP_BINARY_DIR}/build/outputs/apk/release
         DEPENDS createAPK${name}
 
@@ -486,7 +534,7 @@ function(addDeploySignedAPK name android_src aliase keystore keystorePass target
     ADD_CUSTOM_TARGET(
         deployAAB${name}
         COMMAND ${CMAKE_COMMAND} -E copy *.aab ${targetDir}
-        COMMENT "copt aab: ${CMAKE_COMMAND} -E copy *.aab ${targetDir}"
+        COMMENT "copy aab: ${CMAKE_COMMAND} -E copy *.aab ${targetDir}"
         WORKING_DIRECTORY ${QT_ANDROID_APP_BINARY_DIR}/build/outputs/bundle/release
         DEPENDS deployAPK${name}