Я потратил 2 дня на эту проблему, и до сих пор не знаю, как это сделать.
Все, что я пытаюсь сделать, - это построить программу, или, скорее, функцию на C, которая потребуетсжатый файл lzma, и распакуйте его в Windows.Я делаю это с CLion, с Cygwin 64 3.0.1.
Звучит легко?Вероятно, за исключением того факта, что все методы, которые я пробовал просто, не работают.
Позвольте мне сначала убрать это из виду, что я не знаком с Cmake, так что именно поэтому я спрашиваюсовет.
Методы, которые я пробовал:
1)
Поиск многих кодов на github, я просто вижу, как они делают
#include <lzma.h>
Хорошо, простоне работает на винде.Когда я скомпилировал, я получил ошибку:
undefined reference to `lzma_stream_decoder'
undefined reference to `lzma_code'
Гугл сказал мне, что мне не хватает библиотеки для разработки lzma, и решение - просто сделать sudo apt, и ... ты догадываешься: нетдля Windows.
2)
Может быть, это Cmake, поэтому давайте сначала попробуем скомпилировать с простым gcc.Я взял простой код распаковки с #include <lzma.h>
и попытался скомпилировать его в Ubuntu.Круто, все прошло гладко.
Вернувшись в Windows, я открыл терминал Cygwin.О, конечно, в Cygwin я скачал liblzma-devel.
Компиляция работает отлично.НО при запуске исполняемого файла:
cygwin1.dll and cyglzma-5.dll are missing
Что ... Даже когда я специально скачал эти файлы и поместил их в одну папку с исполняемым файлом, он все равно не запускается правильно.
3)
Назад к Clion / Cmake.
Я заглянул в Lzma SDK , но безрезультатно.Какой код я должен записать в файл Cmake?Я не могу найти никакого руководства, которое говорит, как использовать это в C, не говоря уже о компиляции его с помощью Cmake.
Поиск в Google "Cmake Lzma" приведет меня к FindLibLZMA , которого у меня нетИдея о чем они пишут.Я до сих пор не знаю, какую строку поместить в мой файл CmakeList.txt, например add_library
или find_package
... Нет, ничего.
4)
Наконец, Xz Utils ... самый обширный инструмент Lzma, насколько я понимаю, и, конечно, как-то, он также не работает.
Я положил файл FindLibLZMA.cmake (который я опускаю изgithub) в папку с именем Cmake.Затем я добавил
find_package(LibLZMA REQUIRED)
include_directories(${LIBLZMA_INCLUDE_DIRS})
в файл CmakeList.txt.Затем я установил LIBLZMA_INCLUDE_DIR
в файле FindLibLZMA.cmake в папку, включающую Xz Utils для Windows ... и, как вы думаете, ошибка компиляции:
# LIBLZMA_HAS_AUTO_DECODER - True if lzma_auto_decoder() is found (required).
# LIBLZMA_HAS_EASY_ENCODER - True if lzma_easy_encoder() is found (required).
# LIBLZMA_HAS_LZMA_PRESET - True if lzma_lzma_preset() is found (required).
Все эти библиотеки или что-то требуетсяа где они?Компилятор не смог найти его, так что да ... опять я застрял.
Я пытался со вчерашнего дня, и я все еще застрял.
Так что, пожалуйста, я очень усталсейчас.Любая добрая душа скажет мне, как заставить библиотеку Lzma работать с Cmake на Windows ... Пожалуйста ... Пожалуйста.Спасибо!