Skip to content

Commit 3cb79f0

Browse files
authored
Merge pull request #50 from cpp-best-practices/vcpkg-bug
2 parents 03a9473 + 95f4606 commit 3cb79f0

1 file changed

Lines changed: 21 additions & 18 deletions

File tree

src/Vcpkg.cmake

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6,47 +6,50 @@ macro(run_vcpkg)
66
# optional named VCPKG_DIR and VCPKG_URL argument
77
set(oneValueArgs VCPKG_DIR VCPKG_URL)
88
cmake_parse_arguments(
9-
project_options
10-
""
9+
_vcpkg_args
10+
"${options}"
1111
"${oneValueArgs}"
1212
""
1313
${ARGN})
1414

15-
if(${ProjectOptions_VCPKG_DIR})
15+
if(NOT "${_vcpkg_args_VCPKG_DIR}" STREQUAL "")
1616
# the installation directory is specified
17-
get_filename_component(VCPKG_PARENT_DIR ${ProjectOptions_VCPKG_DIR} DIRECTORY)
17+
get_filename_component(VCPKG_PARENT_DIR ${_vcpkg_args_VCPKG_DIR} DIRECTORY)
1818
else()
1919
# Default vcpkg installation directory
2020
if(WIN32)
2121
set(VCPKG_PARENT_DIR $ENV{userprofile})
22-
set(ProjectOptions_VCPKG_DIR ${VCPKG_PARENT_DIR}/vcpkg)
22+
set(_vcpkg_args_VCPKG_DIR ${VCPKG_PARENT_DIR}/vcpkg)
2323
else()
2424
set(VCPKG_PARENT_DIR $ENV{HOME})
25-
set(ProjectOptions_VCPKG_DIR ${VCPKG_PARENT_DIR}/vcpkg)
25+
set(_vcpkg_args_VCPKG_DIR ${VCPKG_PARENT_DIR}/vcpkg)
2626
endif()
2727
endif()
2828

29-
# check if the vcpkg is installed
30-
if(EXISTS ${ProjectOptions_VCPKG_DIR})
31-
message(STATUS "${ProjectOptions_VCPKG_DIR} already exists.")
32-
if(${ProjectOptions_ENABLE_VCPKG_UPDATE})
29+
# check if vcpkg is installed
30+
if (WIN32 AND "${CMAKE_EXECUTABLE_SUFFIX}" STREQUAL "")
31+
set(CMAKE_EXECUTABLE_SUFFIX ".exe")
32+
endif()
33+
if(EXISTS "${_vcpkg_args_VCPKG_DIR}" AND EXISTS "${_vcpkg_args_VCPKG_DIR}/vcpkg${CMAKE_EXECUTABLE_SUFFIX}")
34+
message(STATUS "vcpkg is already installed at ${_vcpkg_args_VCPKG_DIR}.")
35+
if(${_vcpkg_args_ENABLE_VCPKG_UPDATE})
3336
message(STATUS "Updating the repository...")
34-
execute_process(COMMAND "git" "pull" WORKING_DIRECTORY ${ProjectOptions_VCPKG_DIR})
37+
execute_process(COMMAND "git" "pull" WORKING_DIRECTORY ${_vcpkg_args_VCPKG_DIR})
3538
endif()
3639
else()
37-
message(STATUS "Installing vcpkg at ${ProjectOptions_VCPKG_DIR}")
40+
message(STATUS "Installing vcpkg at ${_vcpkg_args_VCPKG_DIR}")
3841
# clone vcpkg from Github
39-
if(NOT ${ProjectOptions_VCPKG_URL})
40-
set(ProjectOptions_VCPKG_URL "https://github.com/microsoft/vcpkg.git")
42+
if("${_vcpkg_args_VCPKG_URL}" STREQUAL "")
43+
set(_vcpkg_args_VCPKG_URL "https://github.com/microsoft/vcpkg.git")
4144
endif()
42-
execute_process(COMMAND "git" "clone" "${ProjectOptions_VCPKG_URL}" WORKING_DIRECTORY ${VCPKG_PARENT_DIR})
45+
execute_process(COMMAND "git" "clone" "${_vcpkg_args_VCPKG_URL}" WORKING_DIRECTORY ${VCPKG_PARENT_DIR})
4346
# Run vcpkg bootstrap
44-
execute_process(COMMAND "./vcpkg/bootstrap-vcpkg" WORKING_DIRECTORY "${ProjectOptions_VCPKG_DIR}")
47+
execute_process(COMMAND "./vcpkg/bootstrap-vcpkg" WORKING_DIRECTORY "${_vcpkg_args_VCPKG_DIR}")
4548
endif()
4649

4750
# Setting up vcpkg toolchain
4851
list(APPEND VCPKG_FEATURE_FLAGS "versions")
4952
set(CMAKE_TOOLCHAIN_FILE
50-
${ProjectOptions_VCPKG_DIR}/scripts/buildsystems/vcpkg.cmake
51-
CACHE STRING "Vcpkg toolchain file")
53+
${_vcpkg_args_VCPKG_DIR}/scripts/buildsystems/vcpkg.cmake
54+
CACHE STRING "vcpkg toolchain file")
5255
endmacro()

0 commit comments

Comments
 (0)