Я пишу файл .cmake, который обрабатывает кучу вещей и требует доступа к исполняемому файлу по фиксированному относительному пути к файлу .cmake. В этом случае оргианизация выглядит так:
CMakeLists.txt
- cmake
- tools.cmake
- bin
- exectuable.exe
Проблема в том, что tools.cmake включен с использованием include и, таким образом, CMAKE_CURRENT_SOURCE_DIR возвращает каталог CMakeLists.txt. Причина, по которой я не хочу жестко указывать путь, заключается в том, что я хочу поместить tools.cmake и двоичный файл в отдельный репозиторий GIT и не хочу заставлять пользователя помещать его в какую-то конкретную папку.
Единственное решение, которое я могу придумать прямо сейчас, - это предоставить функцию, которая устанавливает и сохраняет путь к tools.cmake. Это не очень элегантно.
@vre, как описано, они возвращают не tools.cmake, а CMakeLists.txt, в который включен tools.cmake.
Я заставляю его работать, заставляя пользователя вручную сохранять переменную в пути, используя свойства. Но мне бы очень хотелось пропустить этот шаг.
Действительно, блин. Но да, я добавлю ответ и помечу как дубли





Ответил здесь: https://stackoverflow.com/a/12854575/2532768
CMAKE_JUCE_TOOLS_PATH не возвращает правильный путь внутри функций или макросов в tools.cmake, но приводит к правильному пути вне любой функции. Так можно нам
set(PATH_TO_TOOLS_CMAKE ${CMAKE_JUCE_TOOLS_PATH})
чтобы сохранить путь, пока к нему можно получить доступ в переменной, а затем получить доступ к PATH_TO_TOOLS_CMAKE в функциях и макросах
CMAKE_CURRENT_LIST_FILEиCMAKE_CURRENT_LIST_DIR- переменные, которые вы ищете?