Check CMake Cache Variable in Toolchain File

I don’t pretend to fully understand what’s going on behind the scenes, but here’s a workaround that works for me:

# Problem: CMake runs toolchain files multiple times, but can't read cache variables on some runs.
# Workaround: On first run (in which cache variables are always accessible), set an intermediary environment variable.

if (FOO)
    # Environment variables are always preserved.
    set(ENV{_FOO} "${FOO}")
else ()
    set(FOO "$ENV{_FOO}")
endif ()

Leave a Comment