З Вікі:
CMAKE_CURRENT_SOURCE_DIR - це каталог, в якому знаходиться оброблений в даний час CMakeLists.txt
CMAKE_CURRENT_LIST_DIR (з 2.8.3) - це каталог списку файлів, який зараз обробляється.
З Документів:
CMAKE_CURRENT_SOURCE_DIR: шлях до вихідного каталогу, який зараз обробляється. Це повний шлях до вихідного каталогу, який в даний час обробляється cmake.
CMAKE_CURRENT_LIST_DIR: Повний каталог списку файлів, який наразі обробляється. Оскільки CMake обробляє файли списку у вашому проекті, ця змінна завжди буде встановлена в каталог, де знаходиться список файлів, який зараз обробляється (CMAKE_CURRENT_LIST_FILE). Значення має динамічну область застосування. Коли CMake починає обробку команд у вихідному файлі, вона встановлює цю змінну до каталогу, де цей файл знаходиться. Коли CMake закінчує обробку команд з файлу, вона відновлює попереднє значення. Тому значенням змінної всередині макроса або функції є каталог файлу, що викликає найменший запис у стеку виклику, а не каталог файлу, що містить визначення макросу або функції.
За яких обставин ці змінні мали б різні значення?
./
?