Do Wiki:
CMAKE_CURRENT_SOURCE_DIR este é o diretório onde o CMakeLists.txt processado atualmente está localizado
CMAKE_CURRENT_LIST_DIR (desde 2.8.3) este é o diretório do listfile sendo processado atualmente.
Do Docs:
CMAKE_CURRENT_SOURCE_DIR: O caminho para o diretório de origem que está sendo processado. Este é o caminho completo para o diretório de origem que está sendo processado pelo cmake.
CMAKE_CURRENT_LIST_DIR: Diretório completo do listfile atualmente em processamento. Conforme o CMake processa os arquivos de lista em seu projeto, esta variável sempre será definida para o diretório onde o arquivo de lista que está sendo processado atualmente (CMAKE_CURRENT_LIST_FILE) está localizado. O valor tem escopo dinâmico. Quando CMake começa a processar comandos em um arquivo fonte, ele define esta variável para o diretório onde este arquivo está localizado. Quando CMake termina de processar comandos do arquivo, ele restaura o valor anterior. Portanto, o valor da variável dentro de uma macro ou função é o diretório do arquivo que invoca a entrada mais inferior na pilha de chamadas, não o diretório do arquivo que contém a macro ou definição de função.
Sob quais circunstâncias essas variáveis teriam valores diferentes?
./
?