aboutsummaryrefslogtreecommitdiff
path: root/scripts/buildsystems
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/buildsystems')
-rw-r--r--scripts/buildsystems/vcpkg.cmake51
1 files changed, 18 insertions, 33 deletions
diff --git a/scripts/buildsystems/vcpkg.cmake b/scripts/buildsystems/vcpkg.cmake
index ff0873457..e59779e4e 100644
--- a/scripts/buildsystems/vcpkg.cmake
+++ b/scripts/buildsystems/vcpkg.cmake
@@ -385,39 +385,24 @@ set(_VCPKG_INSTALLED_DIR "${VCPKG_INSTALLED_DIR}"
CACHE PATH
"The directory which contains the installed libraries for each triplet" FORCE)
-if(VCPKG_PREFER_SYSTEM_LIBS)
- set(Z_VCPKG_PATH_LIST_OP APPEND)
-else()
- set(Z_VCPKG_PATH_LIST_OP PREPEND)
-endif()
-
-if(CMAKE_BUILD_TYPE MATCHES "^[Dd][Ee][Bb][Uu][Gg]$" OR NOT DEFINED CMAKE_BUILD_TYPE) #Debug build: Put Debug paths before Release paths.
- list(${Z_VCPKG_PATH_LIST_OP} CMAKE_PREFIX_PATH
- "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug"
- "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}"
- )
- list(${Z_VCPKG_PATH_LIST_OP} CMAKE_LIBRARY_PATH
- "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug/lib/manual-link"
- "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/lib/manual-link"
- )
- list(${Z_VCPKG_PATH_LIST_OP} CMAKE_FIND_ROOT_PATH
- "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug"
- "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}"
- )
-else() #Release build: Put Release paths before Debug paths. Debug Paths are required so that CMake generates correct info in autogenerated target files.
- list(${Z_VCPKG_PATH_LIST_OP} CMAKE_PREFIX_PATH
- "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}"
- "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug"
- )
- list(${Z_VCPKG_PATH_LIST_OP} CMAKE_LIBRARY_PATH
- "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/lib/manual-link"
- "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug/lib/manual-link"
+function(z_vcpkg_add_vcpkg_to_cmake_path list suffix)
+ set(vcpkg_paths
+ "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}${suffix}"
+ "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug${suffix}"
)
- list(${Z_VCPKG_PATH_LIST_OP} CMAKE_FIND_ROOT_PATH
- "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}"
- "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug"
- )
-endif()
+ if(NOT DEFINED CMAKE_BUILD_TYPE OR CMAKE_BUILD_TYPE MATCHES "^[Dd][Ee][Bb][Uu][Gg]$")
+ list(REVERSE vcpkg_paths) # Debug build: Put Debug paths before Release paths.
+ endif()
+ if(VCPKG_PREFER_SYSTEM_LIBS)
+ list(APPEND "${list}" "${vcpkg_paths}")
+ else()
+ list(INSERT "${list}" 0 "${vcpkg_paths}") # CMake 3.15 is required for list(PREPEND ...).
+ endif()
+ set("${list}" "${${list}}" PARENT_SCOPE)
+endfunction()
+z_vcpkg_add_vcpkg_to_cmake_path(CMAKE_PREFIX_PATH "")
+z_vcpkg_add_vcpkg_to_cmake_path(CMAKE_LIBRARY_PATH "/lib/manual-link")
+z_vcpkg_add_vcpkg_to_cmake_path(CMAKE_FIND_ROOT_PATH "")
# If one CMAKE_FIND_ROOT_PATH_MODE_* variables is set to ONLY, to make sure that ${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}
# and ${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug are searched, it is not sufficient to just add them to CMAKE_FIND_ROOT_PATH,
@@ -692,7 +677,7 @@ if(X_VCPKG_APPLOCAL_DEPS_INSTALL)
list(APPEND parsed_targets "${arg}")
endif()
- if(last_command STREQUAL "DESTINATION" AND (MODIFIER STREQUAL "" OR MODIFIER STREQUAL "RUNTIME"))
+ if(last_command STREQUAL "DESTINATION" AND (modifier STREQUAL "" OR modifier STREQUAL "RUNTIME"))
set(destination "${arg}")
endif()
if(last_command STREQUAL "COMPONENT")