Author Topic: Script building ...  (Read 3421 times)

Offline LETARTARE

  • Lives here!
  • ****
  • Posts: 531
  • L'ami de l'homme.The friend of man.
    • LETARTARE
Script building ...
« on: November 18, 2011, 01:44:23 pm »
/**** This is a translation by Google ****/

Hello,
I seek an explanation for the use of build scripts in Code::Blocks.

Work environment:
- OS: Vista Basic Pack 2
    Mingw32 with TDM-GCC 4.4/4.5 Series
- Tools: Code:: Blocks 10.05 rev 6283 with wxWidgets unicode 2.8.10
    Squirrel, integrated scripting language and adapted to C::B

problem:
I'm building a C++ console application with the wizard without any modification (generation and execution right).
I would add to the project (not targets) a script designed to illuminate the behavior of C::B when generating the project.
(generation and execution ... right).
This is the only project in project tree

Help with site scripting code:: blocks
- Base page:
http://wiki.codeblocks.org/index.php?title=Category:Scripting_Code::Blocks
- Build scripts:
http://wiki.codeblocks.org/index.php?title=Build_scripts
- Scripting commands:
"http://wiki.codeblocks.org/index.php?title=Scripting_commands"
- Forum
"http://forums.codeblocks.org/index.php/topic,15072.msg100812.html#msg100812"

The script in question "Test.script" has only one function automatically called when generating the project:

Code
//-------------------------------------------------------------------
//  test.script
//--------------------------------------------------------------------
// -> The "SetBuildOptions (base)" is mandatory for
//  build scripts, even empty, otherwise invalid script!
//  (Build_scripts see above)
//--------------------------------------------------------------------

//--------------------------------------------------------------------
// This function only produces the display.
//    base =  instance of 'CompilerTargetBase'
//--------------------------------------------------------------------
function SetBuildOptions (base) {
    // The name of the caller
     local nametarget = base.GetTitle();
     local message =  _T(" SetBuildOptions passage from '")  + nametarget  + _T("'") ;   
    // Message in the console script
     print(message);
    // Post by visual
     ShowWarning(message);
    // Red (for readability) in the console 'Code:: Blocks'
     LogError( message );
}

Results of  November 10, 2011:

 A-in the (re)build the project, this function is called
 Before you build the project ...
 - Once with 'base = project'
 After build ...
 - Once with 'base = target'  (in the order of the targets, unless targets 'command')
 (See the sources of the sdk:
  - "void CompilerCommandGenerator::Init(cbProject* project)"  and
  - "void Compiler::Init(cbProject* project)"

 B-when closing the project or
 C-at the opening of the project or
 D-loading C::B
 -> it is called once !
  E- if automatic backup of the project every 5 minutes
 -> it is called once (unexpectedly!) every 5 min.

You can add markers in the project to separate the  stages of any build (scripting language, care to [[..]])
 1 - pre build step :
Quote
[[ Log(_T("Begin ")+GetProjectManager().GetActiveProject().GetTitle() );]]
Quote
[[ ShowMessage(_T( "  --> Before build ..."));]]
2- post build step :
Quote
[[ local mes = _T("   -->After build");ShowMessage (mes); ]]
Quote
[[ Log( _T("End ") + GetProjectManager().GetActiveProject().GetTitle() );]]

//---------------------------------------------------------------------

Can anyone tell me a way to avoid this behavior, at least curious, C::B?
CB-13483, plugins-sdk-2.25.0 : Collector-2.0.0, AddOnForQt-3.9.1
1-Win7 Business Pack1 64bits : wx-3.2.4, gcc-8.1.0,
2-OpenSuse::Leap-15.4-64bits : wx-3.2.4;gtk3, gcc-8.2.1,
=> !! The messages are translated by Deepl