[MATLAB] Consider lowering the minimum CMake version requirement for building the MATLAB interface
- Dominant language
- C++
- Stars
- 17.1k
- Forks
- 4.3k
- Avg merge
- 3d 18h
- Merged PRs (30d)
- 91
Description
### Describe the enhancement requested
As discussed in this [comment thread](https://github.com/apache/arrow/pull/34563#discussion_r1137882276), the MATLAB interface currently defines a relatively high minimum CMake version (i.e. [`cmake_minimum_required`](https://cmake.org/cmake/help/latest/command/cmake_minimum_required.html)) of `3.20`. For comparison, [the C++ libraries define a minimum required CMake version of `3.5`](https://github.com/apache/arrow/blob/72d57ac4ccc1c80003481d04ad23159c5ed2c2f1/cpp/CMakeLists.txt#L18).
The minimum CMake version for the MATLAB interface was originally [increased from `3.2` to `3.20` to work around some bugs in `FindMatlab` that were making development more challenging](https://github.com/apache/arrow/pull/10305#discussion_r657176867).
It may be worth revisiting this decision and doing a thorough investigation into whether there are any opportunities to lower the minimum required CMake version to ensure broader compatibility with older CMake versions.
This would be a good first issue for any community members who are interested in contributing to the MATLAB interface and would like to get some experience using CMake. This would involve building the interface against versions of CMake prior to `3.20` on Windows, macOS, and Linux, and seeing whether there are any issues that come up.
### Component(s)
MATLAB
Contributor guide
Research direction
Start with the MATLAB interface's cmake_minimum_required setting and compare it with cpp/CMakeLists.txt, then review the cited FindMatlab history. Build the interface with CMake versions before 3.20 on Windows, macOS, and Linux; done means identifying compatibility issues and whether a lower minimum is viable.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cmake, cpp, matlab
- Domain
- build-system
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 42/100