Adding the platform is pure file generation, so it works on any operating system. The CLI only warns that the result cannot be built there. In a copy of BookNest on the Linux build machine:
cordova platform add iosWARNING: Applications for platform ios can not be built on this OS - linux. Using cordova-fetch for cordova-ios Adding ios project... Creating Cordova project for the iOS platform: Path: platforms/ios Package: com.example.booknest Name: BookNest iOS project created with cordova-ios@8.1.1
The CLI recorded "cordova-ios": "^8.1.1" in package.json and wrote a 1.1 MB Xcode 10 project. In cordova-ios 8 the project is always called App: you open App.xcworkspace in Xcode, the startup code is Swift (AppDelegate.swift), App/PrivacyInfo.xcprivacy is the privacy manifest App Store Connect 10 reads, and packages/ holds CordovaLib and your plugins as Swift packages. config.xml has already been translated into Xcode build settings, and reading them needs no Mac:
grep -E "BUNDLE_IDENTIFIER|PRODUCT_NAME|_VERSION =|DEPLOYMENT_TARGET|CODE_SIGN_STYLE" \
platforms/ios/App.xcodeproj/project.pbxproj | tr -d '\t' | sort -uCODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1.0.0; INFOPLIST_KEY_CFBundleDisplayName = "$(PRODUCT_NAME)"; IPHONEOS_DEPLOYMENT_TARGET = 13.0; MARKETING_VERSION = 1.0.0; PRODUCT_BUNDLE_IDENTIFIER = "com.example.booknest"; PRODUCT_NAME = "BookNest"; SWIFT_VERSION = 5.0;
The widget id became the bundle identifier, iOS's equivalent of the Android package name, and version="1.0.0" became both the marketing version users see and the build number. iOS 13 is the lowest version the app installs on. As on Android, platforms/ios is build output: change config.xml and run cordova prepare ios rather than editing the Xcode project, or your edits vanish at the next platform rm.