Я пишу инструмент командной строки C ++. Для системы сборки я использую CMake.
Моему приложению нужна libsodium . Он должен компилироваться в Windows и Linux. Специально для CI / CD ему нужен хороший способ самостоятельного управления зависимостями.
Первый подход
В предыдущих проектах я всегда добавлял необходимые зависимости через CMake, как эта ссылка (заставляя CMake выполнять всю работу вместо этого).
Я также пробовал это с libsodium, но это немного сложнее, поскольку натрий официально не поддерживает CMake. (Я получаю ошибку компоновщика)
второй подход
Итак, я попробовал другой подход. При поиске различных способов обработки зависимостей в CMake я обнаружил Hunter . Я думаю, что это еще один изящный способ добавления зависимостей. Итак, я попробовал это:
cmake_minimum_required(VERSION 3.15.2)
include("cmake/HunterGate.cmake")
HunterGate(
URL "https://github.com/cpp-pm/hunter/archive/v0.23.244.tar.gz"
SHA1 "2c0f491fd0b80f7b09e3d21adb97237161ef9835"
)
project(someProject)
hunter_add_package(libsodium)
find_package(libsodium CONFIG REQUIRED)
...
target_link_libraries(someProject
libsodium::libsodium
)
Ошибка, которую я получаю при использовании Hunter:
[hunter] Calculating Toolchain-SHA1
[hunter] Calculating Config-SHA1
[hunter] HUNTER_ROOT: C:/.hunter
[hunter] [ Hunter-ID: 2c0f491 | Toolchain-ID: 9e19749 | Config-ID: 711bb51 ]
[hunter] LIBSODIUM_ROOT: C:/.hunter/_Base/2c0f491/9e19749/711bb51/Install (ver.: 1.0.16-p0)
[hunter] Building libsodium
[hunter ** FATAL ERROR **] Build step failed (dir: C:/.hunter/_Base/2c0f491/9e19749/711bb51/Build/libsodium
[hunter ** FATAL ERROR **] [Directory:C:/.hunter/_Base/Download/Hunter/0.23.244/2c0f491/Unpacked/cmake/projects/libsodium]
------------------------------ ERROR -----------------------------
https://hunter.readthedocs.io/en/latest/reference/errors/error.external.build.failed.html
------------------------------------------------------------------
CMake Error at C:/.hunter/_Base/Download/Hunter/0.23.244/2c0f491/Unpacked/cmake/modules/hunter_error_page.cmake:12 (message):
Call Stack (most recent call first):
C:/.hunter/_Base/Download/Hunter/0.23.244/2c0f491/Unpacked/cmake/modules/hunter_fatal_error.cmake:20 (hunter_error_page)
C:/.hunter/_Base/Download/Hunter/0.23.244/2c0f491/Unpacked/cmake/modules/hunter_download.cmake:623 (hunter_fatal_error)
C:/.hunter/_Base/Download/Hunter/0.23.244/2c0f491/Unpacked/cmake/projects/libsodium/hunter.cmake:59 (hunter_download)
C:/.hunter/_Base/Download/Hunter/0.23.244/2c0f491/Unpacked/cmake/modules/hunter_add_package.cmake:62 (include)
CMakeLists.txt:13 (hunter_add_package)
Configuring incomplete, errors occurred!
Не поврежден ли пакет в Hunter или мне нужно сделать что-то другое?
Есть ли у кого-нибудь еще идеи, как легко и просто управлять такими зависимостями? Я был бы счастлив с любым ответом. Даже если это совершенно другой подход ... Спасибо
Редактировать 1: ошибка сборки
C:\Users\SORKAL~1\AppData\Local\Temp\cclEnZwH.s: Assembler messages:
C:\Users\SORKAL~1\AppData\Local\Temp\cclEnZwH.s:30: Error: invalid register for .seh_savexmm
C:\Users\SORKAL~1\AppData\Local\Temp\cclEnZwH.s:32: Error: invalid register for .seh_savexmm
C:\Users\SORKAL~1\AppData\Local\Temp\cclEnZwH.s:34: Error: invalid register for .seh_savexmm
C:\Users\SORKAL~1\AppData\Local\Temp\cclEnZwH.s:36: Error: invalid register for .seh_savexmm
C:\Users\SORKAL~1\AppData\Local\Temp\cclEnZwH.s:38: Error: invalid register for .seh_savexmm
C:\Users\SORKAL~1\AppData\Local\Temp\cclEnZwH.s:40: Error: invalid register for .seh_savexmm
C:\Users\SORKAL~1\AppData\Local\Temp\cclEnZwH.s:42: Error: invalid register for .seh_savexmm
C:\Users\SORKAL~1\AppData\Local\Temp\cclEnZwH.s:44: Error: invalid register for .seh_savexmm
C:\Users\SORKAL~1\AppData\Local\Temp\cclEnZwH.s:46: Error: invalid register for .seh_savexmm
C:\Users\SORKAL~1\AppData\Local\Temp\cclEnZwH.s:48: Error: invalid register for .seh_savexmm
C:\Users\SORKAL~1\AppData\Local\Temp\cclEnZwH.s:50: Error: invalid register for .seh_savexmm
C:\Users\SORKAL~1\AppData\Local\Temp\cclEnZwH.s:544: Error: invalid register for .seh_savexmm
C:\Users\SORKAL~1\AppData\Local\Temp\cclEnZwH.s:546: Error: invalid register for .seh_savexmm
C:\Users\SORKAL~1\AppData\Local\Temp\cclEnZwH.s:548: Error: invalid register for .seh_savexmm
C:\Users\SORKAL~1\AppData\Local\Temp\cclEnZwH.s:550: Error: invalid register for .seh_savexmm
C:\Users\SORKAL~1\AppData\Local\Temp\cclEnZwH.s:552: Error: invalid register for .seh_savexmm
C:\Users\SORKAL~1\AppData\Local\Temp\cclEnZwH.s:554: Error: invalid register for .seh_savexmm
C:\Users\SORKAL~1\AppData\Local\Temp\cclEnZwH.s:556: Error: invalid register for .seh_savexmm
C:\Users\SORKAL~1\AppData\Local\Temp\cclEnZwH.s:558: Error: invalid register for .seh_savexmm
C:\Users\SORKAL~1\AppData\Local\Temp\cclEnZwH.s:560: Error: invalid register for .seh_savexmm
C:\Users\SORKAL~1\AppData\Local\Temp\cclEnZwH.s:562: Error: invalid register for .seh_savexmm
C:\Users\SORKAL~1\AppData\Local\Temp\cclEnZwH.s:564: Error: invalid register for .seh_savexmm
C:\Users\SORKAL~1\AppData\Local\Temp\cclEnZwH.s:566: Error: invalid register for .seh_savexmm