Arduino CMake NG Versions Save

CMake-Based framework for Arduino platforms

v0.6.1

5 years ago

Version 0.6.1

Several bug-fixes discovered in the latest v0.6 and some minor features.

New Features

  • Added ability to create Arduino libraries without specifying sources at the moment of creation.
    It aligns well with CMake's target_sources API.

Bug Fixes

  • Fixed a potential regression bug on ubuntu/debian systems causing problems with the CoreLib creation.

  • Platform elements search has been updated to exclude system's PATH in order to avoid false path detection.

  • Fixed bug where platform libraries weren't using all of their sources.

v0.6

5 years ago

This is a BIG version including numerous bug fixes, changes and even some new features.
It mostly addressed 3rd Party Libraries.

New Features

  • 3rd Party Arduino libraries can now be manually added from any path using the add_arduino_library function or automatically found using the find_arduino_library function.
    To use the find API, the 3RD_PARTY argument option should be passed to the function.

  • Header-only Arduino libraries are now supported - They can be manually added using the add_arduino_header_only_library function or automatically found using the find_arduino_library function.
    To use the find API, theHEADER_ONLY argument option should be pass to the function.

  • Full Arduino IDE Sketchbook support - Libraries, examples and sketches can be optionally searched there as well.
    The framework can also automatically find the Sketchbook Location, however, this is disabled by default, what also means that unless set otherwise, the framework doesn't search the sketchbook - This policy is set due to the unwanted dependency on the Arduino IDE for this feature to fully work.
    Further information can be found in the documentation.

  • Many improvements to the CI platforms AppVeyor and Travis CI, including:

    • Cached builds - Decreased build time significantly
    • Improved control-flow and readability

Bug Fixes

  • All functions that were expecting a theoretically "unlimited" list of sources to operate on, such as add_arduino_executable, add_arduino_library etc. couldn't parse more than one file which also was the first.
  • The Linux-Dist-Detection module didn't check whether the required dependencies for the detection are installed.
  • 3rd Party libraries that don't include a library.properties file couldn't be used.
  • 3rd Party libraries have been renamed to an "Arduino-Compliant" name when attempting to find them using the find_arduino_library function, which renamed them to an invalid name.
  • 3rd Party libraries that have been added using custom CMake logic (Calls to add_library) didn't get any of the build flags that every Arduino library has to have.
  • The framework couldn't automatically find the Arduino SDK on OS X images.

Changes

  • Updated project's workflow model, which mostly modifies the development branch from now on to be the master branch, instead of develop. More can be read in the CONTRIBUTING.md file.

  • The Find-SDK module now searches for the version.txt file under a sub-directory named lib, which resides directly under SDK's root path. This file's path is common across all OSs, unlike the previously searched arduino program.

  • The find_arduino_library function now searches under the following paths:

    • ARDUINO_SDK_LIBRARIES_PATH - Usually the libraries directory under the SDK's root directory
    • Sketchbook Location - Arduino IDE's Sketchbook path, storing all user-downloaded libraries
    • CMAKE_CURRENT_SOURCE_DIRECTORY - The directory in which the executed CMakeLists.txt file resides, i.e. Project's source directory
    • PROJECT_SOURCE_DIR - The directory in which the CMakeLists.txt file that sets the project resides.

    Besides, the following sub-directories are searched under every path mentioned above:

    • libraries
    • dependencies
  • 3rd Party Arduino Libraries do not longer have to include the library.properties file in their root directory - Their root directory is searched instead.
    Nevertheless including the file is still recommended, because when the file isn't present, the framework can't infer potentially required metadata from it.