passkey_fw/test/unit-test/vendor/ceedling/plugins/subprojects
hathach 3623ba1884
fix trailing space and new line
temporarily disable codespell
2023-03-17 16:12:49 +07:00
..
config move ceedling tests to test/unit-test 2022-12-08 09:59:02 +07:00
lib move ceedling tests to test/unit-test 2022-12-08 09:59:02 +07:00
README.md fix trailing space and new line 2023-03-17 16:12:49 +07:00
subprojects.rake fix trailing space and new line 2023-03-17 16:12:49 +07:00

README.md

ceedling-subprojects

Plugin for supporting subprojects that are built as static libraries. It continues to support dependency tracking, without getting confused between your main project files and your subproject files. It accepts different compiler flags and linker flags, allowing you to optimize for your situation.

First, you're going to want to add the extension to your list of known extensions:

:extension:
  :subprojects: '.a'

Define a new section called :subprojects. There, you can list as many subprojects as you may need under the :paths key. For each, you specify a unique place to build and a unique name.

:subprojects:
  :paths:
   - :name: libprojectA
     :source:
       - ./subprojectA/first/dir
       - ./subprojectA/second/dir
     :include:
       - ./subprojectA/include/dir
     :build_root: ./subprojectA/build/dir
     :defines:
       - DEFINE_JUST_FOR_THIS_FILE
       - AND_ANOTHER
   - :name: libprojectB
     :source:
       - ./subprojectB/only/dir
     :include:
       - ./subprojectB/first/include/dir
       - ./subprojectB/second/include/dir
     :build_root: ./subprojectB/build/dir
     :defines: [] #none for this one

You can specify the compiler and linker, just as you would a release build:

:tools:
  :subprojects_compiler:
    :executable: gcc
    :arguments:
      - -g
      - -I"$": COLLECTION_PATHS_SUBPROJECTS
      - -D$: COLLECTION_DEFINES_SUBPROJECTS
      - -c "${1}"
      - -o "${2}"
  :subprojects_linker:
    :executable: ar
    :arguments:
      - rcs
      - ${2}
      - ${1}

That's all there is to it! Happy Hacking!