Кросс-платформенная сборка завершается неудачно с неопределенной ссылкой ⇐ C++
Кросс-платформенная сборка завершается неудачно с неопределенной ссылкой
Здравствуйте, я действительно новичок в cmake и c++, и у меня почти есть самое базовое из базовых. Я пытаюсь запрограммировать приложение для Windows WSL и хочу иметь возможность впоследствии собрать его для Windows, чтобы я мог использовать его там.
Мой файл CmakeLists.txt выглядит так
cmake_minimum_required (ВЕРСИЯ 3.20) проект (folder_encryptor_cpp) установить (CMAKE_CXX_STANDARD 23) если (WIN32) include_directories("C:/WinCPP/include") include_directories("C:/WinCPP/include/sodium") link_directories("C:/WinCPP/lib") сообщение(СТАТУС "WIN 32") add_executable(folder_encryptor_cpp main.cpp) target_link_libraries(folder_encryptor_cpp ЧАСТНЫЙ C:/WinCPP/lib/libsodium.a) еще() find_library (натрий-натрий) сообщение(СТАТУС "Linux") add_executable(folder_encryptor_cpp main.cpp) target_link_libraries (folder_encryptor_cpp ЧАСТНЫЙ натрий) конециф() Для Linux библиотека, которую я хочу использовать (sodium), устанавливается с помощью команды make install по пути по умолчанию /usr/local/ и ее можно найти при сборке для Linux.
Дерево файлов Windows выглядит так
C:/WinCPP -включать -натрий -otherHeaders.h -натрий.ч -bin -libsodium-26.dll -lib -libsodium.a -libsodium.la -libsodium.dll.a при попытке сборки на компьютере с Windows я получаю следующий результат
C:\Projects\folder-encryptor-cpp\cmake-build-mingw>cmake --build . [ 50%] Создание объекта CXX CMakeFiles/folder_encryptor_cpp.dir/main.cpp.obj [100%] Связывание исполняемого файла CXXfolder_encryptor_cpp.exe CMakeFiles\folder_encryptor_cpp.dir/objects.a(main.cpp.obj):main.cpp:(.text.startup+0x6f): неопределенная ссылка на `crypto_generichash' Collect2.exe: ошибка: ld вернул 1 статус выхода CMakeFiles\folder_encryptor_cpp.dir\build.make:95: не удалось выполнить рецепт для целевого объекта «folder_encryptor_cpp.exe». mingw32-make.exe[2]: *** [folder_encryptor_cpp.exe] Ошибка 1 CMakeFiles\Makefile2:81: рецепт для цели «CMakeFiles/folder_encryptor_cpp.dir/all» не выполнен mingw32-make.exe[1]: *** [CMakeFiles/folder_encryptor_cpp.dir/all] Ошибка 2 Makefile:89: рецепт для цели «все» не удался mingw32-make.exe: *** [все] Ошибка 2 Я пытался установить натрия с помощью vcpkg, но это тоже не сработало по разным причинам. и у меня нет идей, поэтому буду очень признателен за любой ответ
Здравствуйте, я действительно новичок в cmake и c++, и у меня почти есть самое базовое из базовых. Я пытаюсь запрограммировать приложение для Windows WSL и хочу иметь возможность впоследствии собрать его для Windows, чтобы я мог использовать его там.
Мой файл CmakeLists.txt выглядит так
cmake_minimum_required (ВЕРСИЯ 3.20) проект (folder_encryptor_cpp) установить (CMAKE_CXX_STANDARD 23) если (WIN32) include_directories("C:/WinCPP/include") include_directories("C:/WinCPP/include/sodium") link_directories("C:/WinCPP/lib") сообщение(СТАТУС "WIN 32") add_executable(folder_encryptor_cpp main.cpp) target_link_libraries(folder_encryptor_cpp ЧАСТНЫЙ C:/WinCPP/lib/libsodium.a) еще() find_library (натрий-натрий) сообщение(СТАТУС "Linux") add_executable(folder_encryptor_cpp main.cpp) target_link_libraries (folder_encryptor_cpp ЧАСТНЫЙ натрий) конециф() Для Linux библиотека, которую я хочу использовать (sodium), устанавливается с помощью команды make install по пути по умолчанию /usr/local/ и ее можно найти при сборке для Linux.
Дерево файлов Windows выглядит так
C:/WinCPP -включать -натрий -otherHeaders.h -натрий.ч -bin -libsodium-26.dll -lib -libsodium.a -libsodium.la -libsodium.dll.a при попытке сборки на компьютере с Windows я получаю следующий результат
C:\Projects\folder-encryptor-cpp\cmake-build-mingw>cmake --build . [ 50%] Создание объекта CXX CMakeFiles/folder_encryptor_cpp.dir/main.cpp.obj [100%] Связывание исполняемого файла CXXfolder_encryptor_cpp.exe CMakeFiles\folder_encryptor_cpp.dir/objects.a(main.cpp.obj):main.cpp:(.text.startup+0x6f): неопределенная ссылка на `crypto_generichash' Collect2.exe: ошибка: ld вернул 1 статус выхода CMakeFiles\folder_encryptor_cpp.dir\build.make:95: не удалось выполнить рецепт для целевого объекта «folder_encryptor_cpp.exe». mingw32-make.exe[2]: *** [folder_encryptor_cpp.exe] Ошибка 1 CMakeFiles\Makefile2:81: рецепт для цели «CMakeFiles/folder_encryptor_cpp.dir/all» не выполнен mingw32-make.exe[1]: *** [CMakeFiles/folder_encryptor_cpp.dir/all] Ошибка 2 Makefile:89: рецепт для цели «все» не удался mingw32-make.exe: *** [все] Ошибка 2 Я пытался установить натрия с помощью vcpkg, но это тоже не сработало по разным причинам. и у меня нет идей, поэтому буду очень признателен за любой ответ
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Сборка Visual Studio завершается неудачно, но сборка dotnet с помощью CLI завершается успешно.
Anonymous » » в форуме C# - 0 Ответы
- 44 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Сборка Visual Studio завершается неудачно, но сборка dotnet с помощью CLI завершается успешно.
Anonymous » » в форуме C# - 0 Ответы
- 35 Просмотры
-
Последнее сообщение Anonymous
-