Headless build of multi-project application with CrossCore

I'm trying to set up a continuous integration/testing pipeline for a multi-project application. I came across this question which partially answered how to do headless builds.
https://ez.analog.com/dsp/software-and-development-tools/cces/f/q-a/68208/exporting-makefile-and-building-from-the-command-line

However, this doesn't quite help with my situation, as I have almost a dozen projects that need to be built and linked into a single program.

Using the '-project' option multiple times doesn't seem to work, nor does appending multiple paths after '-project'. Also, my projects are scattered across a working tree with other unrelated projects, so any import option that requires importing all projects under a common root is out of the question. 

Are there any other options that would suit my needs?

Thanks,
Ryan


  • 0
    •  Analog Employees 
    on May 23, 2019 4:41 AM over 1 year ago

    Hi,

    -project [ project | path ] , Identifies the project by providing one of the following:
    • Name of the project within the workspace • Location of the project within the file system

    For more details, please refer in CCES help:
    CrossCore® Embedded Studio 2.8.3 > Integrated Development Environment > Command Line Build Support > Command Line Build Support

    There is a Third Party product called TESSY - from one of our partners, Razorcat - that supports CrossCore Embedded Studio for Unit Testing. More information is available at the links below:
     
    www.razorcat.eu/index.html
    www.razorcat.com/.../matrix3.pdf

    Regards,
    Santha kumari.K

  • Hello,

    This doesn't quite answer my question. I'm aware of how to use CrossCore's command line support to build a single project. As I said, my application consists of multiple projects.

    After some experimentation, I've figured out how to generate a workspace with multiple projects by running ccesc.exe multiple times like so:

    ccesc.exe -application com.analog.crosscore.headlesstools -noSplash -data C:\[myworkspace] -project C:\[myprojectA]
    ccesc.exe -application com.analog.crosscore.headlesstools -noSplash -data C:\[myworkspace] -project C:\[myprojectB]
    ccesc.exe -application com.analog.crosscore.headlesstools -noSplash -data C:\[myworkspace] -project C:\[myprojectC]
    ...
    and so on.

    My workspace consists of 11 projects. 10 of them build libraries, and one links to those libraries and outputs an executable. This "main" project is configured with the other 10 as dependencies. Thus, when I build this project in CrossCore, it first builds the 10 dependent projects.

    After generating the workspace, I attempt to build the application with the following command:
    ccesc.exe -application com.analog.crosscore.headlesstools -noSplash -data C:\[myworkspace] -project C:\[myprojectA] -cleanBuild Debug

    The result is that only projectA gets built. Its dependencies appear to be ignored. However, if I open my workspace generated by the commands above, projectA's dependencies are built first, the final executable is built successfully.

    Are the headless tools just not the right approach here? I really don't want to get involved with 3rd party tooling just to be able to automate a build.

    Thanks,
    Ryan

  • +1
    •  Analog Employees 
    on Jun 3, 2019 2:38 PM over 1 year ago in reply to RHammonds352

    Hi Ryan,

    -project command only build the specified project.


    Please ensure to build library projects(dependent projects) using headless tools before building the main project.

    Regards,
    Santha kumari.K