Implement modern CMake packaging #429

Open
opened 2021-06-09 20:50:27 +02:00 by muellerr · 0 comments
Owner

Modern CMake packaging requires providing a FindXYZ.cmake or XYZconfig.cmake file and then expecting the application code to use find_package(FSFW REQUIRED). This could be used to configure the FSFW in addition or instead of the FSFWConfig.h file. It would also allow the user to only compile specific parts of the code through linked targets, e.g. if a user needs the data link layer, they would need to links against the FSFW::DataLinkLayer and if the user needs RMAP, they would need to link against FSFW::RMAP. It probably also would be a good idea to restructure the code into modules which are always required (internally) by the FSFW, e.g. returnvalues or the ObjectManager, and components which are optional. If this is done which is an API change anyway, it might also be a good idea to separate sources and headers like it is done in most C++/C projects ( but im not sure about that.. I actually like the current structure)

It probably would be a good idea to move the version management to CMake completely like suggested in the CMake tutorial

Modern CMake packaging requires providing a `FindXYZ.cmake` or `XYZconfig.cmake` file and then expecting the application code to use `find_package(FSFW REQUIRED)`. This could be used to configure the FSFW in addition or instead of the `FSFWConfig.h` file. It would also allow the user to only compile specific parts of the code through linked targets, e.g. if a user needs the data link layer, they would need to links against the `FSFW::DataLinkLayer` and if the user needs RMAP, they would need to link against `FSFW::RMAP`. It probably also would be a good idea to restructure the code into modules which are always required (internally) by the FSFW, e.g. returnvalues or the ObjectManager, and components which are optional. If this is done which is an API change anyway, it might also be a good idea to separate sources and headers like it is done in most C++/C projects ( but im not sure about that.. I actually like the current structure) It probably would be a good idea to move the version management to `CMake` completely like suggested in the CMake tutorial
muellerr added the
feature
label 2021-06-12 12:13:42 +02:00
muellerr added this to the v2.0.0 milestone 2021-07-13 15:20:21 +02:00
mohr removed this from the v2.0.0 milestone 2021-10-01 13:18:37 +02:00
Sign in to join this conversation.
No Milestone
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: fsfw/fsfw#429
No description provided.