Я хочу использовать эту библиотеку, см.: https://github.com/jtv/libpqxx
Я решил установить этот менеджер библиотек vcpkg см.: https://github.com/microsoft/vcpkg
Я установил для параметра CMake значение «Проекты CMake должны использовать: «-DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/vcpkg/scripts/buildsystems/vcpkg.cmake».
Это ошибка:
"C:\Program Files\JetBrains\CLion 2019.1.4\bin\cmake\win\bin\cmake.exe" -DCMAKE_BUILD_TYPE=Debug -DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/vcpkg/scripts /buildsystems/vcpkg.cmake -G "CodeBlocks - MinGW Makefiles" C:\Users \Vaio\CLionProjects\untitled
CMake Warning at C:/vcpkg/vcpkg/scripts/buildsystems/vcpkg.cmake:68 (message):
Unable to determine target architecture, continuing without vcpkg.
Call Stack (most recent call first):
cmake-build-debug-mingw/CMakeFiles/3.14.3/CMakeSystem.cmake:6 (include)
CMakeLists.txt:2 (project)
Соответствующий код CMake таков:
if (VCPKG_TARGET_TRIPLET)
elseif (CMAKE_GENERATOR_PLATFORM MATCHES "^[Ww][Ii][Nn]32$")
set(_VCPKG_TARGET_TRIPLET_ARCH x86)
elseif (CMAKE_GENERATOR_PLATFORM MATCHES "^[Xx]64$")
set(_VCPKG_TARGET_TRIPLET_ARCH x64)
elseif (CMAKE_GENERATOR_PLATFORM MATCHES "^[Aa][Rr][Mm]$")
set(_VCPKG_TARGET_TRIPLET_ARCH arm)
elseif (CMAKE_GENERATOR_PLATFORM MATCHES "^[Aa][Rr][Mm]64$")
set(_VCPKG_TARGET_TRIPLET_ARCH arm64)
else()
if (CMAKE_GENERATOR MATCHES "^Visual Studio 14 2015 Win64$")
set(_VCPKG_TARGET_TRIPLET_ARCH x64)
elseif (CMAKE_GENERATOR MATCHES "^Visual Studio 14 2015 ARM$")
set(_VCPKG_TARGET_TRIPLET_ARCH arm)
elseif (CMAKE_GENERATOR MATCHES "^Visual Studio 14 2015$")
set(_VCPKG_TARGET_TRIPLET_ARCH x86)
elseif (CMAKE_GENERATOR MATCHES "^Visual Studio 15 2017 Win64$")
set(_VCPKG_TARGET_TRIPLET_ARCH x64)
elseif (CMAKE_GENERATOR MATCHES "^Visual Studio 15 2017 ARM$")
set(_VCPKG_TARGET_TRIPLET_ARCH arm)
elseif (CMAKE_GENERATOR MATCHES "^Visual Studio 15 2017$")
set(_VCPKG_TARGET_TRIPLET_ARCH x86)
elseif (CMAKE_GENERATOR MATCHES "^Visual Studio 16 2019$")
if (CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "^[Xx]86$")
set(_VCPKG_TARGET_TRIPLET_ARCH x86)
elseif (CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "^[Aa][Mm][Dd]64$")
set(_VCPKG_TARGET_TRIPLET_ARCH x64)
elseif (CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "^[Aa][Rr][Mm]$")
set(_VCPKG_TARGET_TRIPLET_ARCH arm)
elseif (CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "^[Aa][Rr][Mm]64$")
set(_VCPKG_TARGET_TRIPLET_ARCH arm64)
else()
endif ()
else()
find_program(_VCPKG_CL cl)
if (_VCPKG_CL MATCHES "amd64/cl.exe$" OR _VCPKG_CL MATCHES "x64/cl.exe$")
set(_VCPKG_TARGET_TRIPLET_ARCH x64)
elseif (_VCPKG_CL MATCHES "arm/cl.exe$")
set(_VCPKG_TARGET_TRIPLET_ARCH arm)
elseif (_VCPKG_CL MATCHES "arm64/cl.exe$")
set(_VCPKG_TARGET_TRIPLET_ARCH arm64)
elseif (_VCPKG_CL MATCHES "bin/cl.exe$" OR _VCPKG_CL MATCHES "x86/cl.exe$")
set(_VCPKG_TARGET_TRIPLET_ARCH x86)
elseif (CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "x86_64")
set(_VCPKG_TARGET_TRIPLET_ARCH x64)
else()
if ( _CMAKE_IN_TRY_COMPILE )
message(STATUS "Unable to determine target architecture, continuing without vcpkg.")
else()
message(WARNING "Unable to determine target architecture, continuing without vcpkg.")
endif ()
set(VCPKG_TOOLCHAIN ON)
return()
endif ()
endif ()
endif ()
Вот шаг за шагом о том, что я сделал.
Я использую MinGW/GNU в качестве компилятора
Я что-то пропустил? Или почему он не может найти мою целевую архитектуру? Это мои переменные среды.
Примечание. Все работает внутри Visual Studio 2019.
Я добавил -DVCPKG_TARGET_TRIPLET=x64-windows
перед -DCMAKE_TOOLCHAIN_FILE
, и это сработало.
Теперь мне просто нужно выяснить, как связать включения, но я думаю, это другой вопрос.
ссылка на решение: https://vcpkg.readthedocs.io/en/latest/users/integration/
С CMake вы можете установить VCPKG_TARGET_TRIPLET
в строке конфигурации:
cmake ../my/project -DVCPKG_TARGET_TRIPLET=x64-windows-static -DCMAKE_TOOLCHAIN_FILE=...
Если вы используете переменную среды VCPKG_DEFAULT_TRIPLET
для управления неквалифицированным триплетом в командных строках vcpkg, вы можете использовать по умолчанию VCPKG_TARGET_TRIPLET
в CMake, например
Использование переменной среды вместо параметра командной строки:
if (DEFINED ENV{VCPKG_DEFAULT_TRIPLET} AND NOT DEFINED VCPKG_TARGET_TRIPLET)
set(VCPKG_TARGET_TRIPLET "$ENV{VCPKG_DEFAULT_TRIPLET}" CACHE STRING "")
endif ()
Кажется, MinGW+vcpkg официально не поддерживается, см. github.com/Microsoft/vcpkg/issues/3752 для описания, github.com/microsoft/vcpkg/issues/4418#issuecomment-428168157 для объяснения (вам нужно создать файл набора инструментов mingw)