我正在尝试安装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