Pcl: [cmake] Bump minimum CMake version to 3.10

Created on 11 Jul 2020  路  10Comments  路  Source: PointCloudLibrary/pcl

Context
The currently supported minimum CMake version is 3.5. With Ubuntu 16.04 coming to EOL in less than a year.
Most of the people use the PCL binary from apt, so those on 16.04 wouldn't mind (Don't quote me on this)
Now would be a good time for beginning the transition, and in the process hopefully, modernize parts of our current CMake scripts.
The new version of CMake has some nifty features that would be useful.
I have listed some relevant for PCL below:

  1. CUDA Language Support
  2. Clang Tidy Support
  3. Google Test Support

Will add more as I find.

Expected behavior

Update minimum CMake version to 3.10

Current Behavior

Minimum CMake version to 3.10

Describe the solution you'd like

Bump the version after PCL 1.11.1 release and slowly modernize the existing components, in time for the next release after that.

request cmake stale

Most helpful comment

I wouldn't say 3.8 offers significant advantages over 3.10

I like how the edit made it even better :)

All 10 comments

Out of curiosity, can you pinpoint which feature requires 3.10? I though everything was already cool with 3.8.

Out of curiosity, can you pinpoint which feature requires 3.10? I though everything was already cool with 3.8.

If I recall correctly the Google Test one was added in 3.10 but my motivation behind pushing for 3.10 was because that is the default one that comes installed on Ubuntu 18.04 and has been in macOS since 10.12 IIRC.

If I recall correctly the Google Test one was added in 3.10

You mean gtest_discover_tests? Is this something worth bumping two versions for?

but my motivation behind pushing for 3.10 was because that is the default one that comes installed on Ubuntu 18.04 and has been in macOS since 10.12 IIRC.

The way you should interpret it is, you can bump the CMake version all the way to 3.10 if there's a feature which is really convenient.

gtest_discover_tests is not really hitting that target for me. Open to be convinced otherwise.

I've added the features and links in the sun-setting Ubuntu 16.04 issue: #4265. There's also the issue that we'll not get any feedback once the CI dies if we are sticking to the old version features or not.

I saw that list, but you're packing everything which was released from ]3.5, 3.10] under same list with no discrimination, e.g. Native support for CUDA language is a 3.8 feature. Hence me asking here, which ones are 3.10 specific?

There's also the issue that we'll not get any feedback once the CI dies if we are sticking to the old version features or not.

Not being able to test on CI is a strong valid point.

Let me clear, I'm not opposed to jumping to 3.10. I just want to be sure we don't alienate versions too early for superficial reasons.

I saw that list, but you're packing everything which was released from (3.5, 3.10] under same list with no discrimination

That's true. It was based on the assumption that we can't support a particular CMake if the CI isn't running on it.

I just want to be sure we don't alienate versions too early for superficial reasons.

Ack. Will update to separate Ubuntu 18.04 defaults and not Ubuntu 18.04 latest (might take a few days. It's workday soon for me)

Native support for CUDA language -> 3.8
googletest support -> 3.10
OpenMP + Clang support -> 3.10
FindBoost improvements -> Unsure
Updates to if command for comparisons -> 3.8
compile_features instead of flags (eg: C++ 17 polyfill features) (PCL might still remain at C++14) -> 3.8
Doxygen support -> 3.9
Clang tidy integration -> 3.6
cppcheck integration -> 3.10

From a quick lookup, I found the above.
I wouldn't say 3.10 offers significant advantages over 3.8, but It does provide some nifty features. The CI argument would be a better reason to use 3.10.

I wouldn't say 3.10 offers significant advantages over 3.10

Me neither :rofl:

I wouldn't say 3.8 offers significant advantages over 3.10

I like how the edit made it even better :)

Marking this as stale due to 30 days of inactivity. It will be closed in 7 days if no further activity occurs.

Was this page helpful?
0 / 5 - 0 ratings