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