jenkinsc++builderc++builder-xe

Program compiles fine in the IDE but does not compile on the command line


I'm having some trouble with one of my builds. I'm using Jenkins to build a builderXE project but I'm getting the following errors.

C:\Program Files\Embarcadero\RAD Studio\8.0\Bin\CodeGear.Cpp.Targets(2341,5): error : Error: Unresolved external '__fastcall Sqlexpr::TSQLQuery::~TSQLQuery()' referenced from    C:\JENKINS\WORKSPACE\project\STRINGLOOKUPFRMCODE.OBJ
C:\Program Files\Embarcadero\RAD Studio\8.0\Bin\CodeGear.Cpp.Targets(2341,5): error : Error: Unresolved external '__fastcall Sqlexpr::TCustomSQLDataSet::~TCustomSQLDataSet()' referenced from C:\JENKINS\WORKSPACE\project\STRINGLOOKUPFRMCODE.OBJ
C:\Program Files\Embarcadero\RAD Studio\8.0\Bin\CodeGear.Cpp.Targets(2341,5): error : Error: Unresolved external '__fastcall Sqlexpr::TCustomSQLDataSet::ParamByName(const System::UnicodeString)' referenced from C:\JENKINS\WORKSPACE\project\STRINGLOOKUPFRMCODE.OBJ
C:\Program Files\Embarcadero\RAD Studio\8.0\Bin\CodeGear.Cpp.Targets(2341,5): error : Error: Unable to perform link

I read that paths could be fixed by using rsvars.bat but when I tried that nothing happens. This is what I tried.

"C:\Program Files\Embarcadero\RAD Studio\8.0\bin\rsvars.bat" MSBuild "/t:Clean;Build" "/p:config=Release" "C:\jenkins\workspace\project\myProject.cbproj"  

The project compiles with no problems in builderXE but when I uses Jenkins, or just the command line I get these errors. What do I need to do to get this to work again.

UPDATE: I have updated my post with the script I'm using.

set PATH="C:\Program Files\Embarcadero\RAD Studio\8.0\lib\win32\release;C:\Program  Files\Embarcadero\RAD Studio\8.0\bin;C:\Documents and Settings\All Users\Documents\RAD Studio\8.0\Bpl;C:\Program Files\Embarcadero\RAD Studio\7.0\bin;C:\Documents and Settings\All Users\Documents\RAD Studio\7.0\Bpl;C:\PROGRA~1\Serena\vm\win32\bin;C:\PROGRA~1\Serena\vm\common\bin\win32;C:\PROGRA~1\Borland\CBUILD~1\Projects\Bpl;C:\PROGRA~1\Borland\CBUILD~1\Bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Program Files\Wave Systems Corp\Dell Preboot Manager\Access Client\v5\;C:\Program Files\Microsoft SQL Server\90\Tools\binn\;C:\tmssoftware\TMS Component Pack\bpl\;C:\Program Files\SmartBear\Automated Build Studio\bin;C:\Program Files\Mercurial;C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727;C:\Program Files\borland\CBuilder5\Bin;C:\Program Files\Embarcadero\RAD Studio\8.0\bin;C:\Program Files\Embarcadero\RAD Studio\7.0\bin;%IMPLIB%;%ADV%\x86;C:\Program Files\TortoiseHg\;C:\Python26;C:\Program Files\Embarcadero\RAD Studio\8.0\lib\win32\debug;"

call "C:\Program Files\Embarcadero\RAD Studio\8.0\bin\rsvars.bat"
MSBuild "C:\jenkins\workspace\project\myProject.cbproj" "/t:Clean;Build" "/p:config=Release" 

Solution

  • In Jenkins, are you using the "Execute Windows Batch Command" to make these calls? If so, try this:

    call "C:\Program Files\Embarcadero\RAD Studio\8.0\bin\rsvars.bat"
    MSBuild "/t:Clean;Build" "/p:config=Release" "C:\jenkins\workspace\project\myProject.cbproj"
    

    The call command will run the batch file and set all the environment variables in the current session. These will then be available to your MSBuild call.

    Also make sure that any dlls you need are in the current %PATH%. You can do this by:

    set PATH=<your_dll_path_here>;%PATH%
    

    This should be done right in the beginning.