# Source code generation ¶



qi_generate_src(out [SRC <src> ...]
[COMMAND <command> ...]
COMMENT
)


 Arguments: out – the generated files in a list SRC – a group of sources to take as input COMMAND – the command to run to generate the files COMMENT – a comment to be displayed while generating the source file

Generate a source file

Example of use:



set(_input ${CMAKE_CURRENT_SOURCE_DIR}/input.data) set(_output${CMAKE_CURRENT_BINARY_DIR}/generated.c)
qi_generate_src(${_output} SRC${_input} COMMAND my_script ${_input} -o${_output})
qi_create_bin(my_bin ${_output} main.c)  Note that the base dir of the output will automatically be created, so you do not have to worry about it in your script. Also note that you should consider adding an explicit dependency to the command that generates the sources, using the DEPENDS argument: For instance, when using a Python script:  qi_generate_src(... COMMAND${PYTHON2_EXECUTABLE} myscript.py ...
DEPENDS myscript.py
)



Or when using a target:



find_package(FOO REQUIRED)

qi_generate_src(...
COMMAND ${FOO_EXECUTABLE} myscript.py ... DEPENDS${FOO_EXECUTABLE}
)




[COMMAND <command> ...]
COMMENT
)


 Arguments: out – the resulting source file SRC – a group of sources to take as input COMMAND – the command to run to generate the source file COMMENT – a comment to be displayed while generating the source file

Example of use:



set(_input ${CMAKE_CURRENT_SOURCE_DIR}/input.data) set(_generated_h${CMAKE_CURRENT_BINARY_DIR}/generated.h)
qi_generate_header(${_generated_h} SRC${_input}
COMMAND my_script ${_input} -o${_generated_h})
qi_create_bin(foo ${_generated_h} main.c) qi_install_header(${_generated_h})


Notes:
• the base dir of the header will automatically be created, so you do not have to worry about it in your script.
•  include_directories()  will be called with the directory where the header is generated.
• As with  qi_generate_src  , you should specify a  DEPENDS  argument.


qi_generate_trampoline(out in [List <list> ...]
[PYTHON]
)


 Arguments: out – name of the output file, will be put in sdk binary dir. in – script source file below src directory List – of dependencies the script uses. PYTHON – set if the script is a python script. The trampoline scripts sets the following variables: - The appropriate LIBRARY__PATH variable for the platform - PYTHONPATH (Not yet supported) - QI_PATH to all the paths added to the other variables warning for maximum portability, always explicitly invoke python when running the trampoline script.

Generate a trampoline script in stage binary dir that bounces to an other script in source dir

To be used if your script needs to run from src dir, and access some built libraries or other components.