Ошибка компиляции пакета AppGeyor c ++ cmake PNG

Я пытаюсь скомпилировать кроссплатформенное приложение QT для Windows через AppVeyor с помощью cmake.

Под Linux cmake компилируется просто отлично, поэтому CMakeLists.txt должен быть действительным.

AppVeyor компилирует необходимую библиотеку, которая тоже работает.
Но когда дело доходит до проекта CMakeLists.txt, происходит сбой со следующими ошибками:

-- Could NOT find ZLIB (missing:  ZLIB_LIBRARY ZLIB_INCLUDE_DIR)
CMake Error at C:/Program Files (x86)/CMake/share/cmake-3.5/Modules/FindPackageHandleStandardArgs.cmake:148 (message):
Could NOT find PNG (missing: PNG_LIBRARY PNG_PNG_INCLUDE_DIR)
Call Stack (most recent call first):
C:/Program Files (x86)/CMake/share/cmake-3.5/Modules/FindPackageHandleStandardArgs.cmake:388 (_FPHSA_FAILURE_MESSAGE)
C:/Program Files (x86)/CMake/share/cmake-3.5/Modules/FindPNG.cmake:157 (find_package_handle_standard_args)
CMakeLists.txt:20 (find_package)

соответствующая часть внутри CMakeLists.txt:

find_package(PNG REQUIRED)

[...some other cmake stuff...]

# link required other libraries
include_directories(${PNG_INCLUDE_DIR} ${GSL_INCLUDE_DIRS})
target_link_libraries(projectName ${PNG_LIBRARY} ${GSL_LIBRARIES})

это текущий сбой сборки:
https://ci.appveyor.com/project/zebastian/mandelbulber2

используемые файлы CMakeLists.txt и appveyor.yml можно найти в корне проекта здесь:
https://github.com/zebastian/mandelbulber2

Поскольку FindPNG.cmake присутствует, кажется, что отсутствует только zlib, что выглядит немного странно.
Я видел пару файлов appveyor.yml, которые обходят эту проблему, загружая и компилируя некоторые исходные папки png / zlib или используя внешние зависимости, но IMHO это должно быть простой задачей для CI.

Или я что-то упустил?

Любая помощь приветствуется …

-1

Решение

Хорошо, я нашел решение для этой конкретной проблемы:

В Windows есть менеджер пакетов, называемый nuget, для разрешения такого рода зависимостей, который также хорошо работает с appveyor. Для установки libpng я использовал следующую команду:

#packages from nuget
- nuget install zlib-msvc14-x64-master -Version 1.2.8.4 -Source https://ci.appveyor.com/nuget/zlib-shallow-x0n34b3pfq1b
- ps: move zlib*\* deps -force
- move deps\zlibstatic.lib deps\zlib.lib
- nuget install libpng-msvc14-x64-master -Version 1.6.18.44 -Source https://ci.appveyor.com/nuget/libpng-7hwq4pmmrc48
- ps: move libpng*\* deps -force
- move deps\libpng16_static.lib deps\png.lib

где ps и move предназначены только для перемещения вещей. Для меня это кажется разумным решением и может спасти некоторых людей от утомительной самостоятельной компиляции.

Компиляция все еще терпит неудачу из-за окон, занимающих и конфликтующих с 4-буквенными прагмами, и другого специфического поведения msvc. Но это тема для другого дня …

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]