The cmake build uses CMAKE_DEPENDENT_OPTION in several places. But according to my understanding, the resulting logic is wrong and can lead to problems. Consider the following example for building with Qt4 or Qt5 from build/cmake/DefineOptions.cmake:
If a user configures thrift with cmake -DWITH_QT5=ON but does not have Qt5 installed, they will not get an error. They will just get a warning that the option WITH_QT5 was unused.
Furthermore, if the user disables Qt5 (i.e. because its broken), then cmake -DWITH_QT5=OFF will *not* disable the search for Qt5. If the find_package(Qt5 QUIET COMPONENTS Core Network) fails in error, the build will fail, despite the explicit request for cmake -DWITH_QT5=OFF.
My expected behavior is that if WITH_QT5=OFF is specified, that no Qt5 checks are run and that a missing/broken Qt5 would not impact thrift in any way.