Tricky.

Because INCLUDE is processed during the parse phase variables do not have values and are not evaluated. This is the reason that you cannot use variables in the INCLUDE path.

For a conditional include you should be using CALL - if you are concerned about the overhead overhead of repeated CALLs there are a couple of techniques that you can use to keep the code local.

You only need to use INCLUDE if you intend to create a monolithic tokenised script.

Do you have a specific example in mind where you cannot use CALL?

 Code:
If Not IsDeclared($GLOBAL_DEFINE)
   Call @SCRIPTDIR+"\Inc\Header\Globals.h"
EndIf