function(z_vcpkg_setup_pkgconfig_path) cmake_parse_arguments(PARSE_ARGV 0 "arg" "" "CONFIG" "") if("${arg_CONFIG}" STREQUAL "") message(FATAL_ERROR "CONFIG is required.") endif() if(DEFINED arg_UNPARSED_ARGUMENTS) message(FATAL_ERROR "${CMAKE_CURRENT_FUNCTION} was passed extra arguments: ${arg_UNPARSED_ARGUMENTS}") endif() foreach(envvar IN ITEMS PKG_CONFIG PKG_CONFIG_PATH) if(DEFINED ENV{${envvar}}) set("z_vcpkg_env_backup_${envvar}" "$ENV{${envvar}}" PARENT_SCOPE) else() unset("z_vcpkg_env_backup_${envvar}" PARENT_SCOPE) endif() endforeach() vcpkg_find_acquire_program(PKGCONFIG) get_filename_component(pkgconfig_path "${PKGCONFIG}" DIRECTORY) cmake_path(CONVERT "$ENV{PATH}" TO_CMAKE_PATH_LIST path_list NORMALIZE) cmake_path(CONVERT "${pkgconfig_path}" TO_CMAKE_PATH_LIST pkgconfig_path NORMALIZE) if(NOT "${pkgconfig_path}" IN_LIST path_list) vcpkg_add_to_path("${pkgconfig_path}") endif() unset(path_list) unset(pkgconfig_path) set(ENV{PKG_CONFIG} "${PKGCONFIG}") foreach(prefix IN ITEMS "${CURRENT_INSTALLED_DIR}" "${CURRENT_PACKAGES_DIR}") vcpkg_host_path_list(PREPEND ENV{PKG_CONFIG_PATH} "${prefix}/share/pkgconfig") if(arg_CONFIG STREQUAL "RELEASE") vcpkg_host_path_list(PREPEND ENV{PKG_CONFIG_PATH} "${prefix}/lib/pkgconfig") # search order is lib, share, external elseif(arg_CONFIG STREQUAL "DEBUG") vcpkg_host_path_list(PREPEND ENV{PKG_CONFIG_PATH} "${prefix}/debug/lib/pkgconfig") # search order is debug/lib, share, external else() message(FATAL_ERROR "CONFIG must be either RELEASE or DEBUG.") endif() endforeach() # total search order is current packages dir, current installed dir, external endfunction() function(z_vcpkg_restore_pkgconfig_path) cmake_parse_arguments(PARSE_ARGV 0 "arg" "" "" "") if(DEFINED arg_UNPARSED_ARGUMENTS) message(FATAL_ERROR "${CMAKE_CURRENT_FUNCTION} was passed extra arguments: ${arg_UNPARSED_ARGUMENTS}") endif() foreach(envvar IN ITEMS PKG_CONFIG PKG_CONFIG_PATH) if(DEFINED z_vcpkg_env_backup_${envvar}) set("ENV{${envvar}}" "${z_vcpkg_env_backup_${envvar}}") else() unset("ENV{${envvar}}") endif() endforeach() endfunction()