What is the best solution to build several CDT C++ projects from the command line? The projects have references and so it is not possible to just build single projects.
-
4This is one of the big weaknesses of Eclipse in general, I think. Headless builds are not a first class citizen in the Eclipse world. – JesperE Jan 08 '09 at 22:30
-
1Have you considered using [Make](http://en.wikipedia.org/wiki/CMake)? – Lawand Jan 04 '09 at 14:22
-
1Make uses the .mk files generated by CDT on build. So it isn't possible to build the project from scratch. – mmmmmmmm Jan 07 '09 at 21:26
5 Answers
This feature has been added in CDT 6 (Final build due June 15th 2009). You can download the final release candidate from builds page: download.eclipse.org/tools/cdt/builds/6.0.0/.
Using a release of Eclipse 3.5 + CDT 6, you can import, build and clean-build projects and the workspace using the following options sent to Eclipse at the command line:
eclipse -nosplash
-application org.eclipse.cdt.managedbuilder.core.headlessbuild
-import {[uri:/]/path/to/project}
-build {project_name | all}
-cleanBuild {projec_name | all}
On Windows, use eclipsec.exe
instead of eclipse.exe
to have build output written to stdout/stderr and so that the call blocks until completion.
The '-application' switch instructs Eclipse to run the CDT headless builder rather than starting the workbench. The other switches can be used individually or together. This means you can checkout a project using a shell script of your own, '-import' it into a workspace, and '-build' it using the Managedbuilder's headless builder.
Use the '-data' switch to specify the workspace to use, which can be an empty temporary directory, see the runtime documentation for other switches supported by the platform runtime: help.eclipse.org/galileo/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/misc/runtime-options.html
See bug 186847 comment 24 and onwards for more detail on the committed functionality.

- 1,857
- 20
- 24

- 4,492
- 2
- 27
- 24
-
2In addition, you can specify a single configuration with: `-build {project_name[/config_name] | all}` Example: `-build project_name/Release` – Alejandro Blasco Oct 19 '17 at 15:44
Pre CDT 6 you could use the JDT's AptBuilder (included with classic Eclipse, for example).
This lets you build an already configured workspace. So you: checkout your source, configure a workspace which points to the checked-out projects. Your automated build scripts can then update the checkouts and run the AptBuilder without needing to start the GUI.

- 4,492
- 2
- 27
- 24
If you created a Make project under CDT you can just use your favorite shell and execute make in all the projects dirs.

- 5,845
- 22
- 31
-
This is the answer to your question. You need to "mess around with Makefiles". Eclipse is not a build system. – Jesse Weigert Jan 09 '09 at 03:20
-
3@Jesse: This is only a half answer. And it wouldn't be an answer if I had written that our projects are not Make projects. Because changing the pre-conditions of a question is not the answer to it. – mmmmmmmm Jan 13 '09 at 17:27
-
3New URL for @JesseWeigert comment is: http://blog.codinghorror.com/the-f5-key-is-not-a-build-process/ – Jonah Graham Nov 03 '15 at 11:17
Headless build with the manage builder is currently not supported, see bug 186847 - CDT internal builder does not support automated command line builds.
If you use the unmanaged (make) builder, then you already have Makefiles that you can use from the command line.

- 19,853
- 5
- 45
- 59
We do this in our existing build.
Put a makefile in all your external references and your toplevel project. In your "all" rule, have it run: make -C ./externalref1 make -C ./externalref2 etc
we actually define the external dependencies in a variable: EXT_DEP = externalref1 externalref2 then use the subst (substitute) command to kick off all the sub-makes using the correct call.

- 5,755
- 4
- 37
- 54