示例#1
0
        public ProjectForm(CMakeProject project)
        {
            InitializeComponent( );

            generatorList.DataSource = m_generators;

            // default to VS 2015, 64 bit
            generatorList.SelectedIndex = 7;

            m_project = project;

            Text = project.DisplayName;
        }
示例#2
0
        private void reloadProjects()
        {
            var projectFiles = Directory.GetFiles(
                CMakeProject.SourceDirectory,
                "CMakeLists.txt",
                SearchOption.AllDirectories
                );

            var projects = new ArrayList( );

            foreach (var path in projectFiles)
            {
                var project = new CMakeProject(path);

                projects.Add(project);
            }

            projectList.DataSource = projects;
        }
示例#3
0
        public GenerationForm(CMakeProject project, CMakeGenerator generator, bool shouldClean)
        {
            InitializeComponent( );

            m_project = project;

            Text = "Generate " + project.DisplayName;

            m_binaryDir = Path.GetFullPath(
                Path.Combine(kIntDirPrefix + generator.IntermediateDirectory,
                             project.DisplayName
                             )
                ).Replace('\\', '/');

            m_sourceDir = Path.GetDirectoryName(project.Path).Replace('\\', '/');

            if (shouldClean)
            {
                try
                {
                    Directory.Delete(m_binaryDir, true);
                }
                catch
                {
                    // ignored
                }
            }

            if (!Directory.Exists(m_binaryDir))
            {
                Directory.CreateDirectory(m_binaryDir);
            }

            var cmakeArgs = string.Format(
                "-D CMAKE_MODULE_PATH:PATH=\"{0}\" -G \"{1}\" \"{2}\"",
                CMakeProject.ModuleDirectory.Replace('\\', '/'),
                generator.Name.Replace('\\', '/'),
                m_sourceDir
                );

            try
            {
                m_cmakeProcess = new Process
                {
                    StartInfo =
                    {
                        CreateNoWindow         = true,
                        RedirectStandardError  = true,
                        RedirectStandardOutput = true,
                        FileName         = CMakeGenerator.ExecutableName,
                        Arguments        = cmakeArgs,
                        UseShellExecute  = false,
                        WorkingDirectory = m_binaryDir
                    },
                    EnableRaisingEvents = true
                };


                m_cmakeProcess.OutputDataReceived += cmakeOnData;
                m_cmakeProcess.ErrorDataReceived  += cmakeOnError;
                m_cmakeProcess.Exited             += cmakeOnExit;

                m_cmakeProcess.Start( );
                m_cmakeProcess.BeginOutputReadLine( );
                m_cmakeProcess.BeginErrorReadLine( );
            }
            catch
            {
                MessageBox.Show(
                    string.Format("Unable to execute \"{0}\".\n\nMake sure your path is correct.", CMakeGenerator.ExecutableName),
                    "Error",
                    MessageBoxButtons.OK,
                    MessageBoxIcon.Error
                    );

                Close( );
            }
        }