Build tools.
Paolo Invernizzi
arathorn at NO_SPAMfastwebnet.it
Sun Oct 14 07:07:03 PDT 2007
Are you thinking about to release the Xcode plugin? I'm very interested
in it!
Cheers, Paolo
Michel Fortin wrote:
> On 2007-10-13 05:18:18 -0400, Alexander Panek <a.panek at brainsware.org>
> said:
>
>> Michel Fortin wrote:
>>> The plugin only needs to tell Xcode which files depend on which
>>> files. The rest of the build process is handled by Xcode, with the
>>> help of a few other settings the plugin provide.
>>
>> The easiest way to achieve the imports/dependencies is to parse the
>> output of `dmd -v file1.d file2.d', and grep for "^semantic <fileX>" +
>> following "^import".. just take a look yourself, I'm sure it's easier
>> than using the frontend itself.
>
> Given that it works reasonably well already using the front end, I'll
> probably stick to what I have, at least for now. Beside, I'm using the
> front end for a few other things too, so I'll have the front end built
> in the plugin anyway.
>
> For instance: the Xcode language specification format can't handle
> things like nested /+/+comments+/+/, r"raw strings\", binary numbers
> (0b1101) and a few other nice things about D, so for syntax highlighting
> in D files I'm substituting Xcode's lexer for the one in the front end.
>
>> Apart from that, how does the Xcode build process work? Can't you just
>> call a binary from inside Xcode?
>
> Yes. I could create a target with a shell script build phase in which I
> would call DSSS/Rebuild. But my goal is to have better integration than
> that.
>
> Within an Xcode project, you choose the files you wish to compile for a
> specific target. When building, Xcode finds the most appropriate build
> rule for each file. A build rule determines the dependencies for a given
> file, the command to run to compile that file, and the products of
> running that command (these are object files in our case). Xcode creates
> the dependency graph and run the appropriate build rules for files which
> have been modified or have some dependency modified; then it sends the
> products (objects files) to the linker.
>
> The user interface gives various clues about what's happening during
> that process. You can see which file need to be recompiled, the size of
> the produced object files, the build history (in a nice outline view),
> have the error count for each file in a list and see each compilation
> error in the margin when editing. You can also compile files
> individually and get the same (for only one file). All this is provided
> by the compiler specification class in Xcode, which can only deal with
> one file at a time.
>
> So it turns out that it's much easier to just create a compiler
> specification class to figure out the dependencies and give GDC the
> proper command line arguments than try to overthrown the Xcode building
> process with something foreign. The result is probably better than what
> could be done with DSSS/Rebuild too: beside the better feedback in the
> UI (which is partially lost when Xcode is not in charge of compiling
> individual files), Xcode will also handle a mix of files in different
> languages (with their depdenencies) in the same target.
>
More information about the Digitalmars-d
mailing list