summaryrefslogtreecommitdiffstats
path: root/platform/ios/export/export_plugin.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'platform/ios/export/export_plugin.cpp')
-rw-r--r--platform/ios/export/export_plugin.cpp22
1 files changed, 14 insertions, 8 deletions
diff --git a/platform/ios/export/export_plugin.cpp b/platform/ios/export/export_plugin.cpp
index c0e052865f..6bc3241425 100644
--- a/platform/ios/export/export_plugin.cpp
+++ b/platform/ios/export/export_plugin.cpp
@@ -2074,15 +2074,21 @@ bool EditorExportPlatformIOS::is_package_name_valid(const String &p_package, Str
bool EditorExportPlatformIOS::_check_xcode_install() {
static bool xcode_found = false;
if (!xcode_found) {
- String xcode_path;
- List<String> args;
- args.push_back("-p");
- int ec = 0;
- Error err = OS::get_singleton()->execute("xcode-select", args, &xcode_path, &ec, true);
- if (err != OK || ec != 0) {
- return false;
+ Vector<String> mdfind_paths;
+ List<String> mdfind_args;
+ mdfind_args.push_back("kMDItemCFBundleIdentifier=com.apple.dt.Xcode");
+
+ String output;
+ Error err = OS::get_singleton()->execute("mdfind", mdfind_args, &output);
+ if (err == OK) {
+ mdfind_paths = output.split("\n");
+ }
+ for (const String &found_path : mdfind_paths) {
+ xcode_found = !found_path.is_empty() && DirAccess::dir_exists_absolute(found_path.strip_edges());
+ if (xcode_found) {
+ break;
+ }
}
- xcode_found = DirAccess::dir_exists_absolute(xcode_path.strip_edges());
}
return xcode_found;
}