User forums > Using Code::Blocks

Conditional Evaluation using $if(){}{}

(1/1)

BackInTheSandbox:
Hello,
this is a follow-up on How to use Conditional Evaluation using $if(){}{}. I'm trying the same as the original poster. For testing purposes I currently use an abbreviation at "Settings" => "Editor..." => "Abbreviations".

With
--- Code: ---$TARGET_NAME
--- End code ---
I get Debug or Release, depending on my Target.

But with
--- Code: ---$if($TARGET_NAME == "Debug"){MYDEBUG}{MYRELEASE}
--- End code ---
I always get MYRELEASE.

I also tried:
--- Code: ---$TARGET_NAME == Debug
--- End code ---

--- Code: ---$TARGET_NAME == 'Debug'
--- End code ---
The result is always the same.

The original thread mentions a bug, but I'm not sure about the discussion in the referred ticket. Is the bug fixed in Release 17.12?

TIA, BackInTheSandbox

oBFusCATed:
The bug has status "open", so it is not fixed anywhere.
Bluehazzard can tell if this is the same issue or this is something else.

BackInTheSandbox:
Too bad  ;)
Is there any other trick to implement a #define based on build target?I know that I can do that in the project's build options. But I'd prefer a project independent approach, i.e. in the code::blocks settings rather than the project settings.
CU,BackInTheSandbox

BlueHazzard:
Yes the bug is the same and it is still open, no comments, so i will commit it. This patch is not perfect but it is an improvement of infinite, because at the moment the if does not work at all ;)

You probably can use squirrel scripting to do what you want...

--- Code: ---[[if(ReplaceMacros(_T("$TARGET_NAME")).Matches(_T("Debug"))){print("MYDEBUG");} else {print("MYRELEASE");}]]
--- End code ---

BackInTheSandbox:
Thanks, BlueHazzard!
That squirrel script works like a charm. I put it in the compiler settings under #defines and I get what I need.
CU,BackInTheSandbox

Navigation

[0] Message Index

Go to full version