Разница между CMAKE_CURRENT_SOURCE_DIR и CMAKE_CURRENT_LIST_DIR
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 заканчивает обработку команд из файла, он восстанавливает предыдущее значение. Поэтому значение переменной внутри макроса или функции - это каталог файла, вызывающего самую нижнюю запись в стеке вызовов, а не каталог файла, содержащего определение макроса или функции.
При каких обстоятельствах эти переменные будут иметь разные значения?