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?

./?Respuestas:
Las variables
CMAKE_CURRENT_SOURCE_DIRyCMAKE_CURRENT_LIST_DIRpueden hacer referencia a diferentes directorios para un archivo de lista de CMake que se incluye en otro archivo con el comando include . Por ejemplo, si aCMakeLists.txtestá presente en un directorioprojecty contiene la siguiente directivaluego, mientras
src/CMakeLists.txtse está procesando,CMAKE_CURRENT_LIST_DIRse referirá aproject/srcmientras queCMAKE_CURRENT_SOURCE_DIRaún apunta al directorio externoproject.CMAKE_CURRENT_LIST_DIRresulta útil cuando necesita localizar archivos de recursos como archivos de plantilla o scripts por lotes que se encuentran junto alCMakeLists.txtarchivo que se está procesando actualmente.fuente
CMAKE_CURRENT_LIST_DIRcambia con cada archivoinclude(); no tiene que ser llamadoCMakeLists.txt.CMAKE_CURRENT_LIST_DIRyinclude(...)en sus proyectos.CMAKE_CURRENT_SOURCE_DIRes más similar a loCMAKE_SOURCE_DIRque implican los documentos.add_subdirectory()? ¿Apuntarán ambas variables a la carpeta?