On some systems, need to explicitly specify that libdl is needed. An example is IBM which has the following uname output:
Linux ride6 3.10.0-514.el7.ppc64le #1 SMP Wed Oct 19 11:27:06 EDT 2016 ppc64le ppc64le ppc64le GNU/Linux
Adding CMAKE_DL_LIBS seems to be the CMake way to do this.
CMake + linux