De la Wiki:
CMAKE_CURRENT_SOURCE_DIR este es el directorio donde se encuentra el CMakeLists.txt actualmente procesado
CMAKE_CURRENT_LIST_DIR (desde 2.8.3) este es el directorio del archivo de lista que se está procesando actualmente.
De los Documentos:
CMAKE_CURRENT_SOURCE_DIR: la ruta al directorio de origen que se está procesando actualmente. Esta es la ruta completa al directorio de origen que cmake está procesando actualmente.
CMAKE_CURRENT_LIST_DIR: directorio completo del archivo de lista que se está procesando actualmente. A medida que CMake procesa los archivos de lista en su proyecto, esta variable siempre se establecerá en el directorio donde se encuentra el archivo de lista que se está procesando actualmente (CMAKE_CURRENT_LIST_FILE). El valor tiene alcance dinámico. Cuando CMake comienza a procesar comandos en un archivo fuente, establece esta variable en el directorio donde se encuentra este archivo. Cuando CMake termina de procesar los comandos del archivo, restaura el valor anterior. Por lo tanto, el valor de la variable dentro de una macro o función es el directorio del archivo que invoca la entrada más baja en la pila de llamadas, no el directorio del archivo que contiene la macro o la definición de la función.
¿En qué circunstancias estas variables tendrían valores diferentes?
./
?