Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > ubuntu cmake ошибка линковки


Автор: union2 18.1.2023, 22:48
доброго дня всем. установил себе библиотеки ffmpeg

далее скачал себе репу примеров для этой либы https://github.com/leandromoreira/ffmpeg-libav-tutorial

в проекте есть такой вот CMakeLists.txt

Код

cmake_minimum_required(VERSION 3.14)
project(FFmpeg)

add_executable(main main.cpp)

find_package(PkgConfig REQUIRED)
pkg_check_modules(AVCODEC     REQUIRED IMPORTED_TARGET libavcodec)
pkg_check_modules(AVFORMAT    REQUIRED IMPORTED_TARGET libavformat)
pkg_check_modules(AVFILTER    REQUIRED IMPORTED_TARGET libavfilter)
pkg_check_modules(AVDEVICE    REQUIRED IMPORTED_TARGET libavdevice)
pkg_check_modules(AVUTIL      REQUIRED IMPORTED_TARGET libavutil)
pkg_check_modules(SWRESAMPLE  REQUIRED IMPORTED_TARGET libswresample)
pkg_check_modules(SWSCALE     REQUIRED IMPORTED_TARGET libswscale)

target_include_directories(main INTERFACE
        ${AVCODEC_INCLUDE_DIRS}
        ${AVFORMAT_INCLUDE_DIRS}
        ${AVFILTER_INCLUDE_DIRS}
        ${AVDEVICE_INCLUDE_DIRS}
        ${AVUTIL_INCLUDE_DIRS}
        ${SWRESAMPLE_INCLUDE_DIRS}
        ${SWSCALE_INCLUDE_DIRS}
        )
target_link_options(main INTERFACE
        ${AVCODEC_LDFLAGS}
        ${AVFORMAT_LDFLAGS}
        ${AVFILTER_LDFLAGS}
        ${AVDEVICE_LDFLAGS}
        ${AVUTIL_LDFLAGS}
        ${SWRESAMPLE_LDFLAGS}
        ${SWSCALE_LDFLAGS}
        )

target_link_libraries(main avcodec avformat avfilter avdevice avdevice avutil swresample swscale)




по идее все либы прописаны для линковки но таки на ее этапе получаю 
/home/interface/devel/c++/ffmpeg/libavformat/amvenc.c:355: неопределённая ссылка на «av_packet_unref»
и еще кучу подобных ошибок

при этом нашел вариант как собрать из консоли такой командой(и мой код успешно этим вариантом собирается)

gcc -g -Wall 0_hello_world.c $(pkg-config --libs libavformat libavcodec libavdevice libavfilter libavutil libswscale libswresample) -lz -o build/hello

как я понимаю pkg-config обеспечивает поиск всех связанных библиотек и выстраивание списка в нужной последовательности по порядку зависимостей.

собственно вопрос - что я недоделал в CMakeLists.txt ?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)