CMake Pkg -Путь ссылки на библиотеку конфигурации

Итак, я собираю примеры для 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 -, так как она работает нормально, и мне не очень хочется добавлять модуль поиска. Итак, мой файл выглядит так:

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})

Все компилируется до стадии компоновки, где я получаю ошибки с неопределенными символами. Затем я вижу, что вывод pkg-config --libs gstreamermm-0.10начинается с -L/usr/local/lib. Я смотрю на вывод make VERBOSE=1, и CMake НЕ добавляет -L к команде ссылки, хотя у меня есть строка каталогов ссылки _. Поэтому, несмотря на то, что я использую заголовки для новой версии gstreamer в /usr/local/include, вместо этого используется библиотека из /usr/lib,когда я хочу использовать версию в /usr/local/lib. Pkg -Config, кажется, улавливает это и соответствующим образом настраивает, но CMake, даже несмотря на то, что я использую его для внутренней конфигурации pkg -, не улавливает флаги ссылки.

Сейчас я мог бы вручную установить флаги ссылок, но это похоже на хак. Я уверен, что есть лучший способ указать это.

7
задан Robert Mason 9 April 2012 в 17:03
поделиться