Мне нужно повторно использовать крупный проект C ++, который в настоящее время разрабатывается внутри eclipse, с использованием функции управляемой сборки CDT, mingw и cdt (без внешних файлов makefile или среды сборки). Сам проект состоит из множества подпроектов.
Я хочу интегрировать эту сборку в сервер непрерывной интеграции (в частности, jenkins) и, таким образом, иметь возможность автоматизировать сборку без головы.
Пока мне удалось проверить проект (легко от jenkins) и построить его в безголовом режиме с помощью eclipse, используя следующую команду:
C:\prog\EclipseCdt\eclipse -nosplash -application org.eclipse.cdt.managedbuilder.core.headlessbuild -import %WORKSPACE%\project1 -import %WORKSPACE%\project2 -import %WORKSPACE%\project3 -build all
Однако этого недостаточно:
- сборка является асинхронной: предыдущая команда возвращает (на самом деле она разветвляется), в то время как я ожидаю, что она будет удерживать контекст до тех пор, пока я не получу результат (как это было бы с
make
в Linux илиdevenv
в Windows) - Мне не удалось извлечь журналы сборки (в идеале они должны быть в файле): чтобы интегрировать в свою непрерывную информацию, мне нужно иметь возможность анализировать журналы сборки, чтобы отображать интересную информацию (подумайте о сломанных файлах)
- В идеале я бы хотел получить от Eclipse прямой статус (код возврата), который указывает, прошел или не прошел.
Есть идеи, как добиться такого поведения?
Обратите внимание, что:
- использование альтернативной (внешней) системы сборки в настоящее время не вариант (я должен сохранить управляемую сборку cdt, у нее много сложной истории)
- Я уже посмотрел на переполнение стека и google и не смог найти способ сделать это, несмотря на кажущуюся простоту моей потребности
- В настоящее время я использую Windows 7 / mingw 4.5.2 / Eclipse IDE для разработчиков C / C ++ Версия: Indigo Release Build id: 20110615-0604, но я думаю, что вопрос в x-платформе