8.1.13. Multi-Target Projects

8.1.13.1. Background

Multi-Target projects are projects that produce more than one executable/library/plugin during the build process that are not linked together in the build process.

8.1.13.2. What needs to be done?

The build configuration of the CI has to consider the following:

  1. In the project configuration sections of the build configuration, the input naming the IR file must be a unique name that is not used in the build process.

  2. Make sure to correctly use the parameters for linking the respective build process outcomes with cafeCC/ irlink

    • cafeCC --shared, when linking a shared library or DLL without a main function

    • cafeCC -larg --static_part, when linking executables that depend on plugins

    • cafeCC -larg --runtime_lib, in front of plugins

    • cafeCC -larg --include_unused, when some archives may contain unused units you still want to analyze afterwards

  3. Add the BuildSystemIntegration AxivionLinker as a post-build action.

  4. Add all executables/libraries/plugins to the input_files option and plugin_files option, respectively.

  5. If the input_files consist of several executables, then you should additionally set /Project/advanced.multi_binary to true. However note, that StaticSemanticAnalysis may produce false positives in such a setup.

  6. The result IR file produced is the one to be used in the following analysis steps.