Связывая libavcodec в Cmake, find_library не будет работать ни с одной библиотекой - PullRequest
0 голосов
/ 09 февраля 2019

Я пытаюсь скомпилировать код cpp, который использует libavcodec:

 #include <libavcodec/avcodec.h>

Я перепробовал все варианты

find_package()

с именами типа ffmpeg, для которых я получаю

CMake Warning at CMakeLists.txt:17 (find_package):
  By not providing "Findffmpeg.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "ffmpeg", but
  CMake did not find one.

  Could not find a package configuration file provided by "ffmpeg" with any
  of the following names:

    ffmpegConfig.cmake
    ffmpeg-config.cmake

  Add the installation prefix of "ffmpeg" to CMAKE_PREFIX_PATH or set
  "ffmpeg_DIR" to a directory containing one of the above files.  If "ffmpeg"
  provides a separate development package or SDK, be sure it has been
  installed.

Кстати, я сделал sudo apt install -y ffmpeg до всего этого.

Я компилирую с

add_executable(my_executable ${sources})

Минимальный рабочий пример

CMakeLists.txt

cmake_minimum_required(VERSION 3.1.0)

project(hello)

find_library(AVCODEC_LIBRARY avcodec)

add_executable(hello main.cpp)

target_link_libraries( hello PRIVATE ${AVCODEC_LIBRARY})

main.cpp

#include <iostream>
using namespace std;

int main() 
{
    cout << "Hello, World!";
    return 0;
}

Вывод:

lz@vm:~/mcve$ cmake .
-- The C compiler identification is GNU 7.2.0
-- The CXX compiler identification is GNU 7.2.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
AVCODEC_LIBRARY
    linked by target "hello" in directory /home/lz/mcve

-- Configuring incomplete, errors occurred!
See also "/home/lz/mcve/CMakeFiles/CMakeOutput.log".

1 Ответ

0 голосов
/ 10 февраля 2019

Это то, чего не хватало (даже если в некоторых папках моей системы появился libavcodev)

sudo apt install -y libavcodec-dev libavformat-dev libavdevice-dev libavfilter-dev
...