Пакет QtAV msys2: cmake говорит, что libQtAV.dll.a "файл не существует", но он существует - PullRequest
0 голосов
/ 08 ноября 2018

Я пытаюсь установить QtAV и связать его с моим проектом на MSYS2. Я успешно установил пакет для QtAV в мою среду msys2. Однако, когда я добавляю find_package (QtAV) в мой CMakeLists.txt, он выдает ошибку об одном из несуществующих статических файлов ссылок. Но когда я смотрю, он наверняка существует!

Что мне не хватает, что это не работает?

Ошибка:

$ mingw32-make.exe
-- Boost version: 1.68.0
-- Found the following Boost libraries:
--   system
--   log
--   date_time
--   log_setup
--   filesystem
--   thread
--   regex
--   chrono
--   atomic
CMake Error at C:/msys32/mingw32/lib/cmake/QtAV/QtAV-config.cmake:68 (message):
  The imported target "QtAV" references the file

     "/mingw32/lib/libQtAV.dll.a"

  but this file does not exist.  Possible reasons include:

  * The file was deleted, renamed, or moved to another location.

  * An install or uninstall procedure did not complete successfully.

  * The installation package was faulty and contained

     "C:/msys32/mingw32/lib/cmake/QtAV/QtAV-config.cmake"

  but not all the files it references.

Но вы можете видеть, что файл существует:

$ ls -l "/mingw32/lib/libQtAV.dll.a"
-rw-r--r-- 1 michael None 1486500 Nov  7 15:52 /mingw32/lib/libQtAV.dll.a

C: /msys32/mingw32/lib/cmake/QtAV/QtAV-config.cmake

# Generated by CMake

if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.5)
   message(FATAL_ERROR "CMake >= 2.6.0 required")
endif()
cmake_policy(PUSH)
cmake_policy(VERSION 2.6)
#----------------------------------------------------------------
# Generated CMake target import file.
#----------------------------------------------------------------

# Commands may need to know the format version.
set(CMAKE_IMPORT_FILE_VERSION 1)

# Protect against multiple inclusion, which would fail when already imported targets are added once more.
set(_targetsDefined)
set(_targetsNotDefined)
set(_expectedTargets)
foreach(_expectedTarget QtAV)
  list(APPEND _expectedTargets ${_expectedTarget})
  if(NOT TARGET ${_expectedTarget})
    list(APPEND _targetsNotDefined ${_expectedTarget})
  endif()
  if(TARGET ${_expectedTarget})
    list(APPEND _targetsDefined ${_expectedTarget})
  endif()
endforeach()
if("${_targetsDefined}" STREQUAL "${_expectedTargets}")
  unset(_targetsDefined)
  unset(_targetsNotDefined)
  unset(_expectedTargets)
  set(CMAKE_IMPORT_FILE_VERSION)
  cmake_policy(POP)
  return()
endif()
if(NOT "${_targetsDefined}" STREQUAL "")
  message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_targetsDefined}\nTargets not yet defined: ${_targetsNotDefined}\n")
endif()
unset(_targetsDefined)
unset(_targetsNotDefined)
unset(_expectedTargets)


# The installation prefix configured by this project.
set(_IMPORT_PREFIX "/mingw32")

# Create imported target QtAV
add_library(QtAV SHARED IMPORTED)

set_target_properties(QtAV PROPERTIES
  INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include;${_IMPORT_PREFIX}/include/QtAV"
)

# Load information for each installed configuration.
get_filename_component(_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
file(GLOB CONFIG_FILES "${_DIR}/QtAV-config-*.cmake")
foreach(f ${CONFIG_FILES})
  include(${f})
endforeach()

# Cleanup temporary variables.
set(_IMPORT_PREFIX)

# Loop over all imported files and verify that they actually exist
foreach(target ${_IMPORT_CHECK_TARGETS} )
  foreach(file ${_IMPORT_CHECK_FILES_FOR_${target}} )
    if(NOT EXISTS "${file}" )
      message(FATAL_ERROR "The imported target \"${target}\" references the file
   \"${file}\"
but this file does not exist.  Possible reasons include:
* The file was deleted, renamed, or moved to another location.
* An install or uninstall procedure did not complete successfully.
* The installation package was faulty and contained
   \"${CMAKE_CURRENT_LIST_FILE}\"
but not all the files it references.
")
    endif()
  endforeach()
  unset(_IMPORT_CHECK_FILES_FOR_${target})
endforeach()
unset(_IMPORT_CHECK_TARGETS)

# This file does not depend on other imported targets which have
# been exported from the same project but in a separate export set.

# Commands beyond this point should not need to know the version.
set(CMAKE_IMPORT_FILE_VERSION)
cmake_policy(POP)

Я сгенерировал этот пакет, используя

git clone https://github.com/wang-bin/QtAV.git
cd QtAV/msys2
makepkg-mingw -sCLf
pacman -U mingw-w64-i686-qtav-r3509.7ddf6db2-1-any.pkg.tar.xz
...