Интерфейс компилятора кода с использованием C # - PullRequest
2 голосов
/ 03 января 2012

Я хочу написать программу или класс, который может компилировать коды cpp с использованием установленного компилятора GCC и, если есть ошибки компиляции: сообщить о них.

Если ошибок нет, запустите исполняемый файл и отправьтевходные данные и получение выходных данных из этой программы, а затем использовать выходные данные для других вычислений.

Мое решение использует класс .net Process и вызывает CMD и ...., но есть ли лучший способ илилучше компоненты .net написать эту программу?

Ответы [ 3 ]

1 голос
/ 03 января 2012

Помимо использования Process для вызова компиляторов командной строки, вы можете использовать MSBuild для выполнения сценария сборки. Преимущество заключается в том, что ваши пользователи могут создавать и изменять свои собственные сценарии сборки без каких-либо изменений в вашем приложении. Любой компилятор может быть подключен к сценариям MSBuild, а вывод ошибок и предупреждений стандартизирован, поэтому вы легко можете его проанализировать. MSBuild поставляется со средой исполнения с использованием .Net. См. здесь и здесь (устарело) для примеров. Так же работает Visual Studio. Файлы проекта являются сценариями msbuild.

0 голосов
/ 03 января 2012

Для GCC, который в основном это, никаких причудливых решений там нет.

Если вы хотите скомпилировать MS C ++ (я думаю, что это управляемый C ++, но я не уверен в этом), вы можете использовать CodeDomProvider.

Здесь вы найдете документы по CPP здесь

Рабочий пример того, как его использовать на основе CSharpProvider, можно найти здесь

0 голосов
/ 03 января 2012

Решение, которое вы предлагаете, вполне доступно.Подпишитесь на выходные данные GCC и прочитайте для errs & warns.

Основываясь на используемой архитектуре, вы можете подумать об использовании двоичного файла devenv.com из установочного пакета VS.С его помощью вы можете скомпилировать projects или solution.Не очень понятно, если это то, что вам нужно, но, кстати, еще один вариант снова рассмотреть.

...