Including private library with options


#1

Hi all!

I am working with ststm32 / stm32cube project - and all is nice.

I am using the Stm32CubeMX tool from ST-Link to create initialization files, and include those files to ./src/stm32cubemx/

And i am using FreeRTOS to provided stuff, included now in ./src/FreeRTOS/

The project compiles fine when i have all placed under the ./src/ and adjust the include flags properly ( -I./src/FreeRTOS/include/ -I./src/FreeRTOS/portable/GCC/ARM_CM4F/ -I./src/FreeRTOS/CMSIS_RTOS/) and (-I./src/stm32cubemx/).

Now what i would love to see, is that i could place these “messy” files to ./lib/.

Now in my opinion it would be clean solution: craft ./lib/FreeRTOS/library.json (and ./lib/stm32cubemx/library.json) that would declare all these include directories - but based on my trial-n-error it does not work.

Should it work? Are there other ways to include “private & local” - libraries with some extra flags ("-I…")

And just to continue questioning futher: what is the best way to have the FreeRTOSConfig.h file (and portmacro.h) that are more kind of part of the project than the library (since they are config files) – and the library depends on them, so placing them in the ./src/ will not work?

Thanks,
Pauli


#2

It should work. Did you put library.json correctly? I’ve just updated README:


#3

Thanks for your reply - you are correct, it does work, when i now retried – probably some configuration issue earlier.

If somebody else stumbples here for this information its simple as:

  1. lib_deps = MYPREFIX_FreeRTOS
  2. Create lib/MYPREFIX_FreeRTOS/library.json - that declares proper build flags (include dirs)
  3. FreeRTOS requires FreeRTOSConfig.h – i handled that in the way that i added “-I…/…/src/config” to the library.json build flags. This way its not inside the library, but in the project source.

Here is my library.json as an example:

            {
        "name": "MYPREFIX_FreeRTOS",
        "keywords": "Freertos",
        "description": "FreeRTOS for the stm32cubemx",
        "downloadUrl": "https://local_download_only.com/v1.0.0.tar.gz",
        "authors":
        [
            {
            "name": "FreeRTOS",
            "email": "info@freertos.org"
            }
        ],
        "build": 
        { 
            "flags" : "-Isrc/include -Isrc/portable/GCC/ARM_CM4F/ -I../../src/config/"
        },
        "dependencies": {   },
        "version": "1.0.0",
        "frameworks": "stm32cube",
        "platforms": "*"
        }

Thanks,
Pauli