public void CheckRuntimeSearchPath() { foreach (var buildConfigEntry in buildConfigs.GetEntries()) { XCBuildConfigurationData configurationData = buildConfigEntry.Value; configurationData.RemoveProperty("LD_RUNPATH_SEARCH_PATHS"); configurationData.AddProperty("LD_RUNPATH_SEARCH_PATHS","$(inherited)"); configurationData.AddProperty("LD_RUNPATH_SEARCH_PATHS","/usr/lib/swift"); configurationData.AddProperty("LD_RUNPATH_SEARCH_PATHS", "@executable_path/Frameworks"); configurationData.AddProperty("LD_RUNPATH_SEARCH_PATHS", "@loader_path/Frameworks"); } }
public void AddDynamicFrameworkToProject(string targetGuid, string frameworkPathInProject) { var fileGuid = FindFileGuidByProjectPath(frameworkPathInProject); if (fileGuid == null) { Debug.LogError("Framework not found: " + frameworkPathInProject); return; } // add file reference as embed framework var embedFrameworkFileData = FindEmbeddedFramework(fileGuid); if (embedFrameworkFileData == null) { embedFrameworkFileData = PBXBuildFileData.CreateFromFramework(fileGuid); BuildFilesAdd(targetGuid, embedFrameworkFileData); } // add "Embed Frameworks" section var embedFrameworksSection = FindEmbeddedFrameworkSection(); if (embedFrameworksSection == null) { embedFrameworksSection = PBXCopyFilesBuildPhaseData.Create("Embed Frameworks", "10"); copyFiles.AddEntry(embedFrameworksSection); } var frameworkAlreadyAdded = false; foreach (var fileEntry in embedFrameworksSection.files) { if (fileEntry == embedFrameworkFileData.guid) { frameworkAlreadyAdded = true; } } if (!frameworkAlreadyAdded) { embedFrameworksSection.files.AddGUID(embedFrameworkFileData.guid); } // add "Embed Frameworks" section to "Build phases" var targetPhases = nativeTargets[targetGuid].phases; if (!targetPhases.Contains(embedFrameworksSection.guid)) { targetPhases.AddGUID(embedFrameworksSection.guid); } foreach (var buildConfigEntry in buildConfigs.GetEntries()) { XCBuildConfigurationData configurationData = buildConfigEntry.Value; configurationData.AddProperty("LD_RUNPATH_SEARCH_PATHS", "$(inherited) @executable_path/Frameworks"); } }
private void SetDefaultAppExtensionDebugBuildFlags(XCBuildConfigurationData config, string infoPlistPath) { config.AddProperty("ALWAYS_SEARCH_USER_PATHS", "NO"); config.AddProperty("CLANG_CXX_LANGUAGE_STANDARD", "gnu++0x"); config.AddProperty("CLANG_CXX_LIBRARY", "libc++"); config.AddProperty("CLANG_ENABLE_MODULES", "YES"); config.AddProperty("CLANG_ENABLE_OBJC_ARC", "YES"); config.AddProperty("CLANG_WARN_BOOL_CONVERSION", "YES"); config.AddProperty("CLANG_WARN_CONSTANT_CONVERSION", "YES"); config.AddProperty("CLANG_WARN_DIRECT_OBJC_ISA_USAGE", "YES_ERROR"); config.AddProperty("CLANG_WARN_EMPTY_BODY", "YES"); config.AddProperty("CLANG_WARN_ENUM_CONVERSION", "YES"); config.AddProperty("CLANG_WARN_INT_CONVERSION", "YES"); config.AddProperty("CLANG_WARN_OBJC_ROOT_CLASS", "YES_ERROR"); config.AddProperty("CLANG_WARN_UNREACHABLE_CODE", "YES"); config.AddProperty("CLANG_WARN__DUPLICATE_METHOD_MATCH", "YES"); config.AddProperty("COPY_PHASE_STRIP", "NO"); config.AddProperty("ENABLE_STRICT_OBJC_MSGSEND", "YES"); config.AddProperty("GCC_C_LANGUAGE_STANDARD", "gnu99"); config.AddProperty("GCC_DYNAMIC_NO_PIC", "NO"); config.AddProperty("GCC_OPTIMIZATION_LEVEL", "0"); config.AddProperty("GCC_PREPROCESSOR_DEFINITIONS", "DEBUG=1"); config.AddProperty("GCC_PREPROCESSOR_DEFINITIONS", "$(inherited)"); config.AddProperty("GCC_SYMBOLS_PRIVATE_EXTERN", "NO"); config.AddProperty("GCC_WARN_64_TO_32_BIT_CONVERSION", "YES"); config.AddProperty("GCC_WARN_ABOUT_RETURN_TYPE", "YES_ERROR"); config.AddProperty("GCC_WARN_UNDECLARED_SELECTOR", "YES"); config.AddProperty("GCC_WARN_UNINITIALIZED_AUTOS", "YES_AGGRESSIVE"); config.AddProperty("GCC_WARN_UNUSED_FUNCTION", "YES"); config.AddProperty("INFOPLIST_FILE", infoPlistPath); config.AddProperty("IPHONEOS_DEPLOYMENT_TARGET", "8.0"); config.AddProperty("LD_RUNPATH_SEARCH_PATHS", "$(inherited)"); config.AddProperty("LD_RUNPATH_SEARCH_PATHS", "@executable_path/Frameworks"); config.AddProperty("LD_RUNPATH_SEARCH_PATHS", "@executable_path/../../Frameworks"); config.AddProperty("MTL_ENABLE_DEBUG_INFO", "YES"); config.AddProperty("ONLY_ACTIVE_ARCH", "YES"); config.AddProperty("PRODUCT_NAME", "$(TARGET_NAME)"); config.AddProperty("SKIP_INSTALL", "YES"); }