This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CODECOMPOSER: CCS 20.01 does not seem to correctly handle path in -ccs.buildLocation

Part Number: CODECOMPOSER
Other Parts Discussed in Thread: MSPM0G3519

Tool/software:

Hello,

CCS 20.01

With these CLI options:

-ccs.autoGenerateMakefiles false
-ccs.outputType executable
-ccs.outputFormat ELF
-ccs.artifactExtension
-ccs.artifactName OoB_MSPM0G3519
-ccs.configurations _build
-ccs.defaultConfiguration _build
-ccs.buildLocation "D:\CCS\OoB_MSPM0G3519\_build\OoB_MSPM0G3519"
-ccs.buildCommand "D:\CCS\OoB_MSPM0G3519\_theia_workspace\build.bat"
-ccs.buildCommandFlags ""
-ccs.buildTarget OoB_MSPM0G3519

I expect CCS to locate OoB_MSPM0G3519.out file in D:\CCS\OoB_MSPM0G3519\_build\OoB_MSPM0G3519 folder when I start debug session. 

However I get following error:

Unable to read file 'OoB_MSPM0G3519/_build/OoB_MSPM0G3519.out' (EntryNotFound (FileSystemError): Error: ENOENT: no such file or directory, open 'd:\CCS\OoB_MSPM0G3519_theia_workspace\OoB_MSPM0G3519_build\OoB_MSPM0G3519.out')

The path in the error message doesn't quite make sense.

How do I need to set -ccs.buildLocation so CCS recognizes it?

Regards,

Eugene

  • Hi Eugene,

    Can you share the full CLI command used to create the project? 

    Thanks

    ki

  • command:

    "C:\ti\ccs2001\ccs\eclipse\ccs-server-cli.bat"  -noSplash -workspace "D:\CCS\OoB_MSPM0G3519\cfg\debug\..\..\_theia_workspace" -application com.ti.ccs.apps.createProject -ccs.overwrite full -ccs.args "D:\CCS\OoB_MSPM0G3519\cfg\debug\..\..\_theia_workspace\ccs.args"

    where ccs.args:

    -ccs.name "OoB_MSPM0G3519"
    -ccs.device MSPM0G3519
    -ccs.endianness little
    -ccs.ignoreDefaultDeviceSettings true
    -ccs.ignoreDefaultCCSSettings true
    -ccs.toolChain TICLANG
    -ccs.toolVersion TICLANG_4.0.1.LTS
    -ccs.linkFile "D:/CCS/OoB_MSPM0G3519/_build" @dir "_build"
    -ccs.linkFile "D:/CCS/OoB_MSPM0G3519/src/App" @dir "App"
    -ccs.linkFile "D:/CCS/OoB_MSPM0G3519/src/MSP_GUI" @dir "MSP_GUI"
    -ccs.autoGenerateMakefiles false
    -ccs.outputType executable
    -ccs.outputFormat ELF
    -ccs.artifactExtension
    -ccs.artifactName OoB_MSPM0G3519
    -ccs.configurations _build
    -ccs.defaultConfiguration _build
    -ccs.buildLocation "D:\CCS\OoB_MSPM0G3519\_build\OoB_MSPM0G3519"
    -ccs.buildCommand "D:\CCS\OoB_MSPM0G3519\_theia_workspace\build.bat"
    -ccs.buildCommandFlags ""
    -ccs.buildTarget OoB_MSPM0G3519

    Another thought is I am not quite sure why tool options need to be set with -ccs.buildCommand? CCS seems to need them even though it is not in control of the build.

  • Thank you, I will investigate further.

    Another thought is I am not quite sure why tool options need to be set with -ccs.buildCommand? CCS seems to need them even though it is not in control of the build.

    It is interesting that you are using this option. What is the build utility that is being used the build.bat? That option is used to replace the gmake utility that CCS defaults to (and what you can no longer do via the GUI in CCS 20 anymore). 

  • So, this option is only to replace gmake with another make?

    That doesn't quite wok because there is no control over CWD with the build option.

    build.bat was created to overcome that limitation to run make from correct CWD. Expectations was that CCS will use -ccs.buildLocation to load correct OUT file ... but that did not work and thus this post.

    Eugene

  • So, this option is only to replace gmake with another make?

    The option is used to specify the command to call when a project build request is issued. Often it is used to replace the make command used to build the generate makefile. But your usecase of call just a *.bat file for everything with buildCommandFlags and buildTarget set appropriately should theoretically work.

    Expectations was that CCS will use -ccs.buildLocation to load correct OUT file ... but that did not work and thus this post.

    The debugger probably is defaulting to the looking in the configuration subfolder in the project folder and not using the buildLocation path (which is only used by the project build). I'll need to confirm this

  • "The option is used to specify the command to call when a project build request is issued. Often it is used to replace the make command used to build the generate makefile. But your usecase of call just a *.bat file for everything with buildCommandFlags and buildTarget set appropriately should theoretically work."

    But it does not. CCS voluntarily inserts -k -j 16 -O (CODECOMPOSER: Alternative build utility option -ccs.buildCommand adds unexpected options - Code Composer Studio forum - Code Composer StudioTm︎ - TI E2E support forums)

    Defaulting to something is usually done in the absence of an option. Why would project build with alternative build command need -ccs.buildLocation? I'd expect that -ccs.buildLocation is for debugger to find OUT file with alternative build.

    Eugene

  • CCS voluntarily inserts -k -j 16 -O

    This happens if the default build command flags are being used. If you specify that you will use custom command flags and pass in an empty string, that should clear the flags (I tried this out recently). 

    You mentioned that you are using the below flag:

    -ccs.buildCommandFlags ""

    This should be clearing the flags.

  • You are correct.

    You mentioned that you are using the below flag:

    -ccs.buildCommandFlags ""

    This should be clearing the flags.

    This only happens when building with CCS Eclipse. You can use CCS 20 CLI to create the project and building the project with CCS 12.x will accept the cleared flags but CCS 20 ignores it and always appends the flags. Sorry, I was thinking of CCS 12.x when it all worked for me. 

  • Hi Ki,

    -ccs.buildCommandFlags will eventually get fixed (I hope).

    What about -ccs.buildLocation?

    Regards,

    Eugene

  • Properly supporting the custom build commands should resolve all the dependent flag.