コード例 #1
0
        protected override Task <BuildResult> OnBuild(ProgressMonitor monitor, ConfigurationSelector configuration,
                                                      OperationContext operationContext)
        {
            return(Task.Factory.StartNew(() => {
                BuildResult results;

                if (!CheckCMake())
                {
                    results = new BuildResult();
                    results.AddError("CMake cannot be found.");
                    return results;
                }

                FileService.CreateDirectory(file.ParentDirectory.Combine(outputDirectory));

                monitor.BeginStep("Generating build files.");
                Stream generationResult = ExecuteCommand("cmake", "../", outputDirectory, monitor);
                results = ParseGenerationResult(generationResult, monitor);
                monitor.EndStep();

                monitor.BeginStep("Building...");
                Stream buildResult = ExecuteCommand("cmake", "--build ./ --clean-first", outputDirectory, monitor);
                //TODO: Parse results.
                monitor.EndStep();

                return results;
            }));
        }
コード例 #2
0
        protected override Task <BuildResult> OnBuild(ProgressMonitor monitor, ConfigurationSelector configuration,
                                                      OperationContext operationContext)
        {
            return(Task.Factory.StartNew(() => {
                BuildResult results;

                if (!CheckCMake())
                {
                    results = new BuildResult();
                    results.AddError("CMake cannot be found.");
                    return results;
                }

                FileService.CreateDirectory(file.ParentDirectory.Combine(outputDirectory));

                Stream generationResult;
                int buildFlag = 0;
                monitor.BeginStep("Generating build files.");
                if (guiOptions.default_c_compiler.Name == "msvc")
                {
                    generationResult = ExecuteCommand("cmake", "../ -G \"Visual Studio 15 2017\"", outputDirectory, monitor);
                    buildFlag = 1;
                }
                else
                {
                    generationResult = ExecuteCommand("cmake", "../ -G \"MinGW Makefiles\"", outputDirectory, monitor);                      //Default is gcc.
                }
                results = ParseGenerationResult(generationResult, monitor);
                monitor.EndStep();

                string projectMsvc = string.Format("{0}.{1}", fileFormat.ProjectName, "sln");
                monitor.BeginStep("Building...");
                if (buildFlag == 1)
                {
                    Stream buildResult = ExecuteCommand("msbuild", projectMsvc, outputDirectory, monitor);
                    buildFlag = 0;
                }
                else
                {
                    Stream buildResult = ExecuteCommand("mingw32-make", "", outputDirectory, monitor);
                }
                //TODO: Parse results.
                monitor.EndStep();

                return results;
            }));
        }