gpt4 book ai didi

linker - CMake Pkg-Config 库链接路径

转载 作者:行者123 更新时间:2023-12-04 11:42:13 25 4
gpt4 key购买 nike

因此,我正在编译 libgstreamermm-0.10 的示例,并且遇到了 CMake 的问题。

使用我的系统上默认安装的 libgstreamermm-0.10 版本,示例段错误。好的,所以我获得了最新的源并将它们安装到/usr/local 并获得了新示例。一切看起来都很好。

g++ main.cc player_window.cc -o test `pkg-config --cflags --libs gtkmm-3.0` `pkg-config --cflags --libs gstreamermm-0.10`

工作正常,符合预期。太好了,现在尝试让它与 CMake 很好地配合使用。我制作了一个快速的 CMakeLists.txt 文件。我使用 pkg-config,因为它工作得很好,我真的不想添加一个 find 模块。所以我的文件看起来像这样:
cmake_minimum_required(VERSION 2.6.2)
project(media_player_gtkmm)

INCLUDE(FindPkgConfig)

set(SOURCES main.cc player_window.cc)

add_executable(media_player_gtkmm ${SOURCES})

#dependencies
pkg_check_modules(GSTMM REQUIRED gstreamermm-0.10)
pkg_check_modules(GTKMM REQUIRED gtkmm-3.0)
include_directories(${GTKMM_INCLUDE_DIRS} ${GSTMM_INCLUDE_DIRS})
link_directories(${GTKMM_LIBRARY_DIRS} ${GSTMM_LIBRARY_DIRS})
target_link_libraries(media_player_gtkmm ${GTKMM_LIBRARIES} ${GSTMM_LIBRARIES})

一切都编译到链接阶段,我得到 undefined symbol 错误。然后我看到 pkg-config --libs gstreamermm-0.10 的输出以 -L/usr/local/lib 开头。我查看 make VERBOSE=1 的输出并且 CMake 没有将 -L 添加到链接命令中,即使我有 link_directories 行。因此,即使我在/usr/local/include 中使用新版本 gstreamer 的 header ,当我希望使用/usr/local/lib 中的版本时,也会使用/usr/lib 中的库. Pkg-Config 似乎接受了这一点,并进行了相应的调整,但是 CMake,即使我在内部使用 pkg-config,也不会接受链接标志。

我现在可以手动设置链接标志,但这似乎有点小技巧。我确信有更好的方法来指定这一点。

最佳答案

link_directories仅影响来自 AFTER it 的目标.所以,你需要
移动您的add_executablelink_directories 之后称呼。

关于linker - CMake Pkg-Config 库链接路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10076820/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com