Enabling options on CI

I am trying to enable the VTK::IOUSD module in a CI build, namely fedora42_x86_64_mpi_python_qt_tbb.cmake, copied here for reference with my changes:

set(VTK_USE_EXTERNAL ON CACHE STRING "")

# These libraries are not supported right now.
set(VTK_MODULE_USE_EXTERNAL_VTK_exprtk OFF CACHE BOOL "")
set(VTK_MODULE_USE_EXTERNAL_VTK_ioss OFF CACHE BOOL "")
set(VTK_MODULE_USE_EXTERNAL_VTK_fast_float OFF CACHE BOOL "")
set(VTK_MODULE_USE_EXTERNAL_VTK_fides OFF CACHE BOOL "")
set(VTK_MODULE_USE_EXTERNAL_VTK_fmt OFF CACHE BOOL "")
set(VTK_MODULE_USE_EXTERNAL_VTK_libharu OFF CACHE BOOL "")
set(VTK_MODULE_USE_EXTERNAL_VTK_scn OFF CACHE BOOL "")
set(VTK_MODULE_USE_EXTERNAL_VTK_token OFF CACHE BOOL "")
set(VTK_MODULE_USE_EXTERNAL_VTK_verdict OFF CACHE BOOL "")
set(VTK_MODULE_USE_EXTERNAL_VTK_vtkviskores OFF CACHE BOOL "")

include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora42.cmake")

# Enable USD
set(VTK_MODULE_ENABLE_VTK_IOUSD YES CACHE STRING "") # openusd

The last two lines are what I added. Link to MR: https://gitlab.kitware.com/vtk/vtk/-/merge_requests/13457.

This doesn’t seem to work as the resulting CMakeCache.txt on the CI has VTK_MODULE_ENABLE_VTK_IOUSD set to NO even though I think I’ve set it to YES.

VTK_MODULE_ENABLE_VTK_IOUSD is set to NO in configure_fedora42.cmake, but that should be undone by my setting it to YES after configure_fedora42.cmake is included, right? Or am I misunderstanding how include works in CMake?

Ah, it looks like set()'s behavior with the CACHE argument is first-set-wins, unless FORCE is used. That clears up the structure of the various configure_ files for me.