I think that solution is ok for now, using <Option compilerVar="CC"/> or <Option compilerVar="CPP"/> at
Project/Unit/Target level when corresponding.
And for separating Compiler/Linker flags, it is currently implemented at
Project/Unit/Target level (take a look at the CodeBlocks-wx2.6.0.cbp itself), for example at Target level:
<Target title="sdk">
<Option output="devel\codeblocks.dll"/>
<Option working_dir="devel"/>
<Option object_output=".objs\2.6"/>
<Option deps_output=".deps"/>
<Option external_deps="sdk\tinyxml\libtxml.a;"/>
<Option type="3"/>
<Option compiler="0"/>
<Option parameters="--debug-log --no-check-associations"/>
<Option createStaticLib="1"/>
<Option projectLinkerOptionsRelation="2"/>
<Compiler>
<Add option="-DEXPORT_LIB"/>
<Add option="-DEXPORT_EVENTS"/>
<Add option="-D_USRDLL"/> </Compiler>
<Linker>
<Add option="-Wl,--enable-auto-image-base"/>
<Add option="-Wl,--export-all-symbols"/>
<Add option="-Wl,--add-stdcall-alias"/> <Add library="libtxml.a"/>
<Add library="libwxscintilla.a"/>
<Add directory="devel"/>
</Linker>
</Target>
for compiler and linker flags.
Hope that helps
PD: What's the difference between CPP and C++ flags?