Macos CMake成功,但链接时make失败

Macos CMake成功,但链接时make失败,macos,makefile,cmake,homebrew,gstreamer,Macos,Makefile,Cmake,Homebrew,Gstreamer,我正试图用CMake在macOS上编译我的项目。我通过brew安装了gstreamer,可以访问include目录。例如,这是gstreamer的include directoy: /usr/local/Cellar/gstreamer/1.16.2/include/gstreamer-1.0/ 使用以下CMakeLists.txt运行cmake时,所有操作都成功运行,但当我尝试链接以下错误时,make失败: [ 25%] Linking CXX executable multiviewer

我正试图用CMake在macOS上编译我的项目。我通过brew安装了gstreamer,可以访问include目录。例如,这是gstreamer的include directoy:

/usr/local/Cellar/gstreamer/1.16.2/include/gstreamer-1.0/
使用以下
CMakeLists.txt
运行
cmake
时,所有操作都成功运行,但当我尝试链接以下错误时,
make
失败:

[ 25%] Linking CXX executable multiviewer
ld: library not found for -lgstreamer-1.0
CMakeLists.txt:

cmake_minimum_required(VERSION 3.15)
project(application)

set(CMAKE_CXX_STANDARD 20)

set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON)

find_package(Qt5Core REQUIRED)
find_package(Qt5Quick REQUIRED)
find_package(Qt5WebSockets REQUIRED)

# Required for GStreamer
find_package(PkgConfig)

# Look for GStreamer installation
pkg_check_modules(GST REQUIRED gstreamer-1.0)

add_executable(application
        main.cpp qml.qrc server.cpp server.h
        ${PROTO_SRCS} ${PROTO_HDRS} client.cpp client.h)

# Qt5
target_link_libraries(application Qt5::Core Qt5::Quick Qt5::WebSockets)

# GStreamer
target_include_directories(application PUBLIC ${GST_INCLUDE_DIRS})
target_compile_options(application PUBLIC ${GST_CFLAGS})
target_link_libraries(application ${GST_LIBRARIES})
以下是我安装的软件包:

brew install pkg-config
brew install gstreamer
brew install gst-plugins-base
brew install gst-plugins-good
brew install gst-plugins-bad
brew install gst-plugins-ugly
brew install gst-libav
pkg config的输出--cflags gstreamer-1.0

-I/usr/local/Cellar/libffi/3.2.1/lib/libffi-3.2.1/include -I/usr/local/Cellar/gstreamer/1.16.2/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.62.4/include -I/usr/local/Cellar/glib/2.62.4/include/glib-2.0 -I/usr/local/Cellar/glib/2.62.4/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.43/include
-L/usr/local/Cellar/gstreamer/1.16.2/lib -L/usr/local/Cellar/glib/2.62.4/lib -L/usr/local/opt/gettext/lib -lgstreamer-1.0 -lgobject-2.0 -lglib-2.0 -lintl
pkg config的输出--libs gstreamer-1.0

-I/usr/local/Cellar/libffi/3.2.1/lib/libffi-3.2.1/include -I/usr/local/Cellar/gstreamer/1.16.2/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.62.4/include -I/usr/local/Cellar/glib/2.62.4/include/glib-2.0 -I/usr/local/Cellar/glib/2.62.4/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.43/include
-L/usr/local/Cellar/gstreamer/1.16.2/lib -L/usr/local/Cellar/glib/2.62.4/lib -L/usr/local/opt/gettext/lib -lgstreamer-1.0 -lgobject-2.0 -lglib-2.0 -lintl
我是否需要安装其他东西,或者我做错了什么?

错误:

ld: library not found for -lgstreamer-1.0
指示库
gstreamer-1.0
已传递给链接器,但链接器不知道在哪里可以找到它(可能是因为它不在典型的系统路径中)。由CMake提供GST库的完整路径。从文档中,以下是为通用软件包
XXX
填充的一些与库相关的变量:

  • \u库
    : 只有库(不带'-l')

  • \u链接\u库
    : 图书馆及其绝对路径

  • \u LIBRARY\u DIRS
    : 库的路径(不带“-L”)

GST\u LIBRARIES
变量将仅列出库名称(
gstreamer-1.0;gobject-2.0;glib-2.0;intl
),但在这种情况下,我们还需要提供库路径。因此,将
target\u link\u libraries()
调用更改为使用
GST\u link\u libraries

target_link_libraries(application PUBLIC ${GST_LINK_LIBRARIES})

GST\u库
变量的内容是什么?GStreamer库似乎没有被链接。尝试
消息(“GST\u库:${GST\u库}”)
@squareskittles输出为:
GST\u库:gstreamer-1.0;gobject-2.0;glib-2.0;intl
Ok,这个问题是编译器不知道库的完整路径。如果正确填充了
GST\u LINK\u LIBRARIES
变量,您可能会更幸运。@squareskittles谢谢!这就是解决办法。你可能想写一个答案,这样我就可以为未来的迷失灵魂接受它