How do I get FinalBuilder7 to log the command line it is using to run the Delphi XE2 compiler?
When I build my project from Delphi it builds OK, but when I try to build the same project inside the FB7 IDE it fails, and I'd like to be able to compare the two compiler command lines.
Inside Delphi I have it set to Show compiler progress and Show command line, but these don't change what I see inside FB7.
I'm certain this is possible, I just can't find a way of doing it.
On the Action properties dialog, on the compiler tab, there is an option “keep generated .cfg” , the cfg will be changed to projectname.used when the action completes. The only thing we pass on the command line is /B /Q project.dpr
What is the error you are seeing, I might be able to offer some suggestions depending what the error is. BTW, the delphi IDE settings (other than library path, if you choose it) have zero bearing on what FinalBuilder does. The delphi IDE uses msbuild to call dcc32, we call dcc32 directly. XE2 did introduce some silly things that make command line compiling much more difficult, as some features (such as the framework namespace prefixes for the different frameworks) are only implemented in their msbuild task.
I'm setting up a new build machine using Delphi XE2 instead of Delphi 2010. I have an existing FB7 project that works fine on the older build machine that has Delphi 2010 installed.
When I first tried to build my project inside the Delphi XE2 IDE, I got this error:
[DCC Fatal Error] MSHTML.pas(172): F1026 File not found: 'Graphics.dcu'
...which is because Delphi needs to know what namespace Graphics.dcu lives in - as of XE2 it's in Vcl.Graphics.dcu rather than Graphics.dcu.
I'd got the project to build inside the Delphi XE2 IDE by visiting
and editing 'Unit scope names', adding Vcl;Vcl.Imaging
However, these changes were to the global IDE settings, and you told me that nearly all the IDE settings are not used by FB7.
So I removed Vcl;Vcl.Imaging from the global IDE settings and put them instead in the 'Unit scope names' for the Build configuration for the project. Once I'd done this the project still built inside the IDE.
And once I'd saved the changed project from the Delphi IDE, the project also built inside FB7.
So the problem was me making the right changes in the wrong place...
If you have a Delphi 2010 .dproj file and you open it and save it using the Delphi XE2 IDE, it gains a bunch of new entries.
I think the other mistake I made was to try to build my existing .dproj files using an FB7 Delphi XE2 action without first opening and saving the .dproj file from the Delphi XE2 IDE. So the actual .dproj file being built didn't contain any Namespace items, so it's not surprising the build failed.
Glad to hear you got it working. The framework namespace prefixes are not actually stored in the dproj, but there is a FrameWorkType value (Non, VCL, FMX, FMI) and that determines what namespace prefixes get passed to the compiler.