[fpc-pascal] troubles adding a second target

Ken G. Brown kbrown at mac.com
Sat Feb 7 12:37:21 CET 2009


At 11:19 AM +0100 2/7/09, Jonas Maebe apparently wrote:
>On 07 Feb 2009, at 09:20, Ken G. Brown wrote:
>
>>MacOS X 10.5.6, fpc 2.2.2, Xcode 3.1.2
>>
>>I have a working project started from the fpc supplied template.
>>
>>I've tried to add a second target for testing which is more or less a copy of the first, although the source code has been duplicated and renamed and located in a subfolder of the project folder.
>>
>>I added a carbon application  target since there was no Pascal option in the Add Target function.
>
>That's correct. The only way to compile Pascal code in Xcode is by setting up everything manually. I don't know what you want to build in this extra target, so I cannot say whether "application" is appropriate or not.
>
>>I made sure that the membership checkboxes were only including the new source files in the new target.
>>
>>At first I got errors that there was no build rule for the new source. So I added a rule for Pascal Source Files with custom script by analogy from the working target.
>>There was nothing to be seen in the custom script text box in the rule from the working target, and I added a copy of what was in the 'with output files:' text box
>>$(DERIVED_SOURCES_DIR)-$(CURRENT_VARIANT)/$(CURRENT_ARCH)/$(INPUT_FILE_BASE).s
>>
>>Now when I try to build the new target, I get the following error:
>>   /bin/sh -c
>>/bin/sh: -c: option requires an argument
>>
>>Where does the custom script have to be set up? How does this work?
>
>It is not trivial. The way it works with a single program target is that the "fpc" target compiles all Pascal code to assembler code. It knows which source file to compile because there is a Project setting called "FPC_MAIN_FILE" that points to the main Pascal program file. The "fpc" target points the compiler to this file, and the compiler then automatically compiles this file and all units used by it.
>
>The program target is dependent on this fpc target (this is done by dragging the "fpc" target on top of the program target), so the fpc target is executed first by Xcode. The program target itself then assembles the generated assembler files (the .../$(INPUT_FILE_BASE).s files mentioned above) into object code. Together with the libfpc.a library, also generated by the fpc target and added to the "Link Binary with Libraries" phase of the program target, the Pascal code is linked into the program by Xcode.
>
>If you add a new target which should compile different Pascal sources, the problem is you either have to
>a) add a duplicate fpc target which uses FPC_MAIN_FILE2 or so (requires changing the "Compile Pascal Sources" script phase of that target, replacing all occurrences of FPC_MAIN_FILE with FPC_MAIN_FILE2), add an FPC_MAIN_FILE2 setting to your project settings pointing to the main file for this new program, and make your new program target dependent on this duplicated fpc target
>b) make the new program target dependent on the original "fpc" target, but change the project's FPC_MAIN_FILE setting every time you switch targets.
>
>All in all, it's probably easier to simply use separate projects (unless there is a more convenient option I didn't think of).

Yes, it sounds like the new project is the way to go. Didn't think it would be so complicated.
Application is what I want so I can just do a new project easy enough.

Thx for your trouble explaining this.
Ken G. Brown

>
>Jonas
>_______________________________________________
>fpc-pascal maillist  -  fpc-pascal at lists.freepascal.org
>http://lists.freepascal.org/mailman/listinfo/fpc-pascal




More information about the fpc-pascal mailing list