Code::Blocks Forums
User forums => Using Code::Blocks => Topic started by: LETARTARE on July 28, 2019, 06:56:04 pm
-
I read http://wiki.codeblocks.org/index.php?title=Global_compiler_variables (http://wiki.codeblocks.org/index.php?title=Global_compiler_variables)
and i want define custom variable members
Example :
global variables : 'sdk143'
base : U:\Donnees\Svn_Compile\Cb\Tdm5103\cb-11798-sdk143\src
U:\Donnees\Svn_Compile\Cb\Tdm5103\cb-11798-sdk143\src ( no space !)
new fields =>
lib28 : $(#sdk143)\devel\share\CodeBlocks
lib30 : $(#sdk143)\devel30\share\CodeBlocks
lib31 : $(#sdk143)\devel31\share\CodeBlocks
The following use makes it possible to obtain :
$(#sdk143.lib28) => U:\Donnees\Svn_Compile\Cb\Tdm5103\cb-11798-sdk143\src\devel\share\CodeBlocks
Example : tests under my VISTA configuration and batch command in
'Project->Build options...->Pre/post steps->Post-build steps' :
zip -j9 $(#sdk143.lib28\cbBuildTools.zip manifest.xml
is replaced by
zip -j9 U:\Donnees\Svn_Compile\Cb\Tdm5103\cb-11798-sdk143-q\src\devel\share\CodeBlocks\cbBuildTools.zip manifest.xml
which is correct.
and according to the syntax of the global variables of CB
It is generally recommended to use the syntax $(#variable.include) instead of $(#variable)/include, as it provides additional flexibility and is otherwise exactly identical in functionality
$(#sdk143)\lib28 should be equivalent to $(#sdk143.lib28)
zip -j9 $(#sdk143)\lib28\cbBuildTools.zip manifest.xml
is replaced by
U:\Donnees\Svn_Compile\Cb\Tdm5103\cb-11798-sdk143-q\src\lib28\cbBuildTools.zip manifest.xml
which is not correct !
The user fieds do they have the same rules as the built-in fields ?
I have to make a mistake, but I can not find where ?
-
$(#sdk143)\lib28 should be equivalent to $(#sdk143.lib28)
Why do you think so? Variable expansion ends at the closing brace and therefore "\lib28" is just a string as any other.
-
Quote
It is generally recommended to use the syntax $(#variable.include) instead of $(#variable)/include, as it provides additional flexibility and is otherwise exactly identical in functionality
$(#sdk143)\lib28 should be equivalent to $(#sdk143.lib28)
There are a few variables that are special. For example the .include and the .lib ecc. If they are empty and the base is not empty then
$(#variable.include) will expand to $(#variable.base)/include the same for
$(#variable.lib) will expand to $(#variable.base)/lib
but nothing more. As osdt says the expansion works only in the limit of the parenthesis...
-
Thank you for all the answers.
In http://wiki.codeblocks.org/index.php?title=Global_compiler_variables (http://wiki.codeblocks.org/index.php?title=Global_compiler_variables)
Names and Members :
Code::Blocks allows you to define custom variable members in addition to the builtin ones.
As 'lib28' is a custom variable members, I thought that '$(#variable.lib28)' will expand to '$(#variable.base)/lib28'
So I'm going to modify the wiki accordingly, by specifying this precision.