Re: [CEDET-devel] request for suggestions on how to manage a cxx project in cedet
Brought to you by:
zappo
From: Eric M. L. <er...@si...> - 2011-05-17 00:37:48
|
Hi Kristof, You have some good goals outlined below. Right now some of that stuff will not work out of the box without some development in the CEDET/EDE area. Due to the vast variance in build system types, EDE was designed so that it is easy to add new EDE project types, but that means special development on the part of the user. I'll try to specify more below. On 05/07/2011 01:35 PM, kri...@gm... wrote: > Dear CEDET devs, > > I'd like to ask for your advice. > > Let's assume I have a large c++ project that uses existing libraries > (e.g. Qt, VTK). In such a situation code completion, reference > finding, different builds, etc. are very helpful during development. > Usual setup (i guess usual not only for me) involves having a source > folder, and separate folders for different builds (e.g. Release, > Debug). Each build folder contains the proper make files for that > particular build. The make files specify include folders and > #define-s. > > With the above said, here's what I'd like to achieve in Emacs/CEDET: > - CEDET parsing my Makefiles and finding out what are the actual > include paths and what is #define-d for this build > - be able to find the #includes based on the paths from the make files Parsing Makefiles is already possible with the Semantic parser. EDE, however, doesn't take advantage of this for looking up things such as #defines or #include paths. If there is a particular and common pattern, it can make sense to create said parsers, and make that particular project type available generically. I focused on Automake based builds, or systems where EDE creates the Makefiles. Are you interested in attempting to create or augment an EDE project type? It took me an afternoon to put together a new EDE project for the code I have at work, which is highly specialized. I can help identify things you may need to do. If it is generic, you will need to send in release papers to the FSF to contribute your code back to CEDET. > - provide code completion for the build Once EDE is set up, this just happens. > - be able to rune make for project targets in different build folders > (e.g. Debug, Release) with their respective settings This also is mostly free once your project is setup. Switching between build configurations is currently a challenge, but I have a patch for that I need to merge back into the trunk. > - I wouldn't like to put project specific bits into my .emacs If your project type is reading data directly from Makefiles, you probably don't need to add anything new to your .emacs file. If you instead mean you want something like ede-cpp-root, which is only configured from a .emacs file, then perhaps you only need to edit and add features to ede-cpp-root. > I had created a simple project > (https://gitorious.org/cedet-misc/cedet-test) that is meant to > illustrate my problems. I'd like to implement your suggestions in this > project to achieve my goals. This is a great example project. Thanks for assembling it. If you would like this project type to be auto-detected, the one thing EDE would need is some key file at the topmost level that will tag that directory, and sub directory as being unique to your project style. For example, Android projects have an AndroidMantifest.xml that made it easy for me to create an EDE project for Android. > Thanks in advance, > Kristof > > > PS: On the longer term, I'd like to move into the direction of > generating my makefiles by cmake and still preserve all the above > functionality. I went through the EDE info pages but couldn't really If you are creating your own EDE project type, distinguishing between the two build systems would be a matter of just tweaking your detection mechanisms. > find the answers. Maybe most of these is already possible in CEDET, > this is not clear to me. I think if this test-bunny project works out, > it could be an example for more developers to enjoy the great services > of CEDET with a lower barrier for entrance. The original doc for EDE was focused almost entirely on extending the Automake/code gen versions of the 'ede-proj' project type. I have since found that light-weight custom project detecting mini-projects seem to be what most people want, and also appears to be what you are asking for. Some good examples for you might be ede-linux.el, and ede-emacs.el. > > PS 2: I had read Alex Ott's great article > (http://alexott.net/en/writings/emacs-devenv/EmacsCedet.html) and > other hints for cmake > (http://stackoverflow.com/questions/2123669/configuring-emacs-for-cmake) > but I'd like to reach a more straight forward solution. Also I have a > working setup of the above using hardcoded ede-cpp-root-project. I think you will need to specify in more detail what "straight forward" means. ede-cpp-root is often sufficient to bring in some project with odd build systems. Eric |