Я пытаюсь получить доступ от foo
(см. Ниже) к переменной, которая вычисляется в bar
.Подход, который я наблюдал на SO, заключается в добавлении CACHE INTERNAL
к SET
.Это работает, но я должен вызвать генерацию файлов GNU Make
дважды.Похоже, переменная не находится в кеше для первого запуска, поэтому я получаю просто пустое значение.
Структура
CMakeList.txt (top)--
|
-- CMakeList.txt (foo)
|
-- CMakeList.txt (bar)
Содержание Top CMakeList.txt
...
...
ADD_SUBDIRECTORY(foo)
ADD_SUBDIRECTORY(bar)
...
...
Foo CMakeList.txt
...
...
TARGET_INCLUDE_DIRECTORIES(MyProject SYSTEM PRIVATE
${BarPath}
)
MESSAGE(STATUS "Bar include path " ${BarPath})
...
...
Бар CMakeList.txt
...
...
SET(BarPath ${CMAKE_CURRENT_BINARY_DIR} CACHE INTERNAL "Path to generated files.")
...
...
Затем, когда я запускаю cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=. -G "CodeBlocks - Unix Makefiles"
, MESSAGE
из файла Foo возвращает пустое BarPath
.Запустите его еще раз, и ожидаемое значение будет введено в переменную.Что не так?