function(gdal_set_runtime_env res) # Set PATH / LD_LIBRARY_PATH set(GDAL_OUTPUT_DIR "$>") if(BUILD_APPS) set(GDAL_APPS_OUTPUT_DIR "$>") endif() if(TARGET gtest_for_gdal) if(USE_EXTERNAL_GTEST) if(TARGET GTest::gtest) set(GTEST_DIR "$>") else() set(GTEST_DIR "$>") endif() else() set(GTEST_DIR "$>") endif() endif() if (Python_Interpreter_FOUND) set(GDAL_PYTHON_SCRIPTS_DIR "${PROJECT_BINARY_DIR}/swig/python/gdal-utils/scripts") endif() if (WIN32) string(REPLACE ";" "\\;" PATH_ESCAPED "$ENV{PATH}") if (Python_Interpreter_FOUND) file(TO_NATIVE_PATH "${GDAL_PYTHON_SCRIPTS_DIR}" NATIVE_GDAL_PYTHON_SCRIPTS_DIR) string(REPLACE ";" "\\;" NATIVE_GDAL_PYTHON_SCRIPTS_DIR_WITH_SEP "${NATIVE_GDAL_PYTHON_SCRIPTS_DIR};") endif() if (GDAL_APPS_OUTPUT_DIR) set(GDAL_APPS_OUTPUT_DIR_WITH_SEP "${GDAL_APPS_OUTPUT_DIR}\\;") endif() if (GTEST_DIR) set(SEP_GTEST_DIR "\\;${GTEST_DIR}") endif() list(APPEND RUNTIME_ENV "PATH=${GDAL_OUTPUT_DIR}\\;${GDAL_APPS_OUTPUT_DIR_WITH_SEP}${NATIVE_GDAL_PYTHON_SCRIPTS_DIR_WITH_SEP}${PATH_ESCAPED}${SEP_GTEST_DIR}") else () if (Python_Interpreter_FOUND) set(GDAL_PYTHON_SCRIPTS_DIR_WITH_SEP "${GDAL_PYTHON_SCRIPTS_DIR}:") endif() if (GDAL_APPS_OUTPUT_DIR) set(GDAL_APPS_OUTPUT_DIR_WITH_SEP "${GDAL_APPS_OUTPUT_DIR}:") endif() if (GTEST_DIR) set(SEP_GTEST_DIR ":${GTEST_DIR}") endif() list(APPEND RUNTIME_ENV "PATH=${GDAL_APPS_OUTPUT_DIR_WITH_SEP}${GDAL_PYTHON_SCRIPTS_DIR_WITH_SEP}$ENV{PATH}") # We put GTEST_DIR at the end as it can contains a path like /usr/lib/x86_64-linux-gnu # and we want to see it as close to the end as possible to avoid clashes # if using a custom libproj.so.X in a non-system directory, and aliasing it # to the system library (definitely not a recommended setup! but something # I use) list(APPEND RUNTIME_ENV "LD_LIBRARY_PATH=${GDAL_OUTPUT_DIR}:$ENV{LD_LIBRARY_PATH}${SEP_GTEST_DIR}") endif () list(APPEND RUNTIME_ENV "PYTHONPATH=${PROJECT_BINARY_DIR}/swig/python/") # Set GDAL_DRIVER_PATH We request the TARGET_FILE_DIR of one of the plugins, since the PLUGIN_OUTPUT_DIR will not # contain the \Release suffix with MSVC generator get_property(PLUGIN_MODULES GLOBAL PROPERTY PLUGIN_MODULES) list(LENGTH PLUGIN_MODULES PLUGIN_MODULES_LENGTH) if (PLUGIN_MODULES_LENGTH GREATER_EQUAL 1) list(GET PLUGIN_MODULES 0 FIRST_TARGET) set(PLUGIN_OUTPUT_DIR "$>") list(APPEND RUNTIME_ENV "GDAL_DRIVER_PATH=${PLUGIN_OUTPUT_DIR}") else () # if no plugins are configured, set up a dummy path, to avoid loading installed plugins (from a previous install # execution) that could have a different ABI list(APPEND RUNTIME_ENV "GDAL_DRIVER_PATH=dummy") endif () # Set GDAL_DATA if(WIN32) file(TO_NATIVE_PATH "${PROJECT_SOURCE_DIR}/data" GDAL_DATA) else() set(GDAL_DATA "${PROJECT_SOURCE_DIR}/data") endif() list(APPEND RUNTIME_ENV "GDAL_DATA=${GDAL_DATA}") set(${res} "${RUNTIME_ENV}" PARENT_SCOPE) endfunction()