We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Here's a really basic project management task I just can't figure out to do properly in uVision. I want to build two executables, with minor differences between them. Differences are encapsulated in library code. The projects that produce executables have a few extra files (main, STARTUP.A51, build date, etc), plus the library. The library project has two targets, and produces two libraries, with two different names, one for each variant. The executable projects also have two targets, and are identical except for the library with which they link. In other words, all I need to do is supply a different library to each target in a project. I can't add files directly to the target. They have to go into a group. If I make a group to hold a library file, it's shared between all targets in the project, and so both libraries appear in both targets. Changes to one target change the other target. This is a pretty elementary task, but I can't see how to do this without creating a separate project for every executable, so they can each have their own independent list of files, just so they can use different libraries. (This would be undesirable for maintence reasons, as all the other files are common, and I would rather not have to update four projects every time I add a file.) I get the impression I'm not using uVision the way it was intended, or else I'm overlooking something. What? (While I'm on the subject: I'd prefer the targets to all be listed in the tree view, rather than have a pulldown list for the top level of the tree, with a seperate tree view. That is, something that looks like:
+ Target1 - Target2 - Group1 - File1 - File2 + Group2
Yes, unfortunately uVision's project management is rather weak. "If I make a group to hold a library file, it's shared between all targets in the project, and so both libraries appear in both targets. Changes to one target change the other target." You need to add both libraries to the group then, in Target A (say) uncheck the 'Include in Build' option for Library B. Similarly, in Target B (say) uncheck the 'Include in Build' option for Library A. Or you could have 2 groups, and set the 'Include in Build' as required. "I'd prefer the targets to all be listed in the tree view, rather than have a pulldown list for the top level of the tree" Me Too. And there should be a top-level, where you can set options common to all targets. Currently, when you create a new target, it copies the options from the original target - but from there on, the options are totally independent. If you want to make a change affecting all targets, you have to laboriously repeat it in each one. :-( "Along with this, there should be a menu/key to build / rebuild all targets in the project." Absolutely. Currently I have a 3-target Project; to rebuild all targets, I have a .BAT file that "calls" uVision 3 times from the command, with each target in turn. "should I just bail on uVision and switch to another project management system?" Certainly worth considering - let us know if you find anything! You could always use good ol' makefiles...
do it in a .bat file That's certainly one of the "bail on uVision" options. Or make (etc). people who know what editors should be I don't use the uVision editor much. Sometimes I'll make minimal edits for a quick-fix for some syntax error during compile. But I don't spend much time there. uncheck the 'Include in Build' option Ah! Many thanks. That's the feature I was overlooking. I was stuck on the WYSIWYG notion that if a file was in the list, it was part of the build. So it looks weird, but seems to work. let us know if you find anything There's an analogue to make called "Jam" that I've used before, which has some nice features. It's still text-file-driven, like make. http://www.perforce.com/jam/jam.html So if there's a GUI front end, that could be good. I'll have to poke around on the Web some later. Thanks for the help!