Ejemplo n.º 1
0
        public override BackgroundProcess Build(NativePlugin plugin, NativeBuildOptions buildOptions)
        {
            StringBuilder cmakeArgs = GetBasePluginCMakeArgs(plugin);

            AddCmakeArg(cmakeArgs, "CMAKE_CONFIGURATION_TYPES", "Debug;Release");

            BuildType buildType;

            if (buildOptions.BuildType == BuildType.Default)
            {
                buildType = EditorUserBuildSettings.development ? BuildType.Debug : BuildType.Release;
            }
            else
            {
                buildType = buildOptions.BuildType;
            }
            AddCmakeArg(cmakeArgs, "CMAKE_BUILD_TYPE", buildType.ToString());

            AddCmakeArg(cmakeArgs, "WINDOWS", "ON", "BOOL");
            cmakeArgs.AppendFormat("-B{0}/{1} ", "Windows", buildOptions.Architecture.ToString());

            AddCmakeArg(cmakeArgs, "ARCH", buildOptions.Architecture.ToString(), "STRING");


            int vsVersion = VisualStudioVersion;

            if (vsVersion == -1)
            {
                vsVersion = InstalledVisualStudios.Last <int>();
            }
            cmakeArgs.AppendFormat("-G \"{0} {1}\" ", "Visual Studio", vsVersion);

            //Default is x86
            if (buildOptions.Architecture == Architecture.x86_64)
            {
                AddCmakeArg(cmakeArgs, "CMAKE_GENERATOR_PLATFORM", "x64", "STRING");
            }

            buildOptions.OutputDirectory = CombineFullPath(plugin.buildFolder, "Windows", buildOptions.Architecture.ToString());

            ProcessStartInfo startInfo = new ProcessStartInfo();

            startInfo.FileName         = CMakeHelper.CMakeLocation;
            startInfo.Arguments        = cmakeArgs.ToString();
            startInfo.WorkingDirectory = plugin.buildFolder;

            BackgroundProcess backgroundProcess = new BackgroundProcess(startInfo);

            backgroundProcess.Name = string.Format("Building \"{0}\" for {1} ({2})", plugin.Name, "Windows", buildOptions.Architecture.ToString());
            return(backgroundProcess);
        }
Ejemplo n.º 2
0
        public static string FindBestVisualStudio()
        {
            var vs = InstalledVisualStudios.OrderByDescending(kvp => kvp.Key).Select(kvp2 => kvp2.Value).FirstOrDefault();

            return(vs == null ? null : vs.Last().Path);
        }