【问题标题】:Unable to use Makefile on ffmpegthumbnailer setup files with Cygwin for Windows 10无法使用适用于 Windows 10 的 Cygwin 在 ffmpegthumbnailer 设置文件上使用 Makefile
【发布时间】:2019-01-27 03:32:54
【问题描述】:

我目前正在尝试构建 exe/二进制文件以支持 Windows 10 上的 ffmpegthumbnailer。我阅读了多篇关于让它工作的帖子,但似乎没有一个能满足我的需求。我目前将 ffmpegthumbnailer-2.2.0 存储在 C:\ffmpegthumbnailer-2.2.0 我看到一个名为 CMakeFilesdist 的文件夹>kffmpegthumbnailerlibffmpegthumbnailerma​​ntestthunar 文件。当我在目录中运行 make 时,我收到

User@User-WIN10 /cygdrive/c/ffmpegthumbnailer-2.2.0/man
$ make
make: *** No targets specified and no makefile found.  Stop.

如何构建/制作 exec 文件,以便使用 PATH 变量查找 ffmpegthumbnailer?

更新 1: 我尝试了 automake 命令,但收到以下消息

$ automake
/cygdrive/c/RubyDevKit/mingw/bin/automake: /cygdrive/c/RubyDevKit/mingw/bin/automake-1.11: /bin/perl: bad interpreter: No such file or directory
/cygdrive/c/RubyDevKit/mingw/bin/automake: line 156: /cygdrive/c/RubyDevKit/mingw/bin/automake-1.11: No error

更新 2:

我运行 cmake 并收到以下消息。

Coder@Coder-WIN10 /cygdrive/c/ffmpegthumbnailer-2.2.0/ffmpegthumbnailer_build
$ cmake ../
-- Building for: Visual Studio 15 2017
-- The C compiler identification is MSVC 19.14.26428.1
-- The CXX compiler identification is MSVC 19.14.26428.1
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio2017/Professional/VC/Tools/MSVC/14.14.26428/bin/Hostx86/x86/cl.exe
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio2017/Professional/VC/Tools/MSVC/14.14.26428/bin/Hostx86/x86/cl.exe -- 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: C:/Program Files (x86)/Microsoft Visual Studo/2017/Professional/VC/Tools/MSVC/14.14.26428/bin/Hostx86/x86/cl.exe
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studo/2017/Professional/VC/Tools/MSVC/14.14.26428/bin/Hostx86/x86/cl.exe -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Could NOT find JPEG (missing: JPEG_LIBRARY JPEG_INCLUDE_DIR)
-- Could NOT find ZLIB (missing: ZLIB_LIBRARY ZLIB_INCLUDE_DIR)
-- Could NOT find PNG (missing: PNG_LIBRARY PNG_PNG_INCLUDE_DIR)
-- Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE)
CMake Error at C:/Program Files/CMake/share/cmake-3.12/Modules/FindPkgConfig.cmke:489 (message):
  pkg-config tool not found
Call Stack (most recent call first):
  C:/Program Files/CMake/share/cmake-3.12/Modules/FindPkgConfig.cmake:602 (_pkgcheck_modules_internal)
  CMakeLists.txt:58 (PKG_CHECK_MODULES)


CMake Error at C:/Program Files/CMake/share/cmake-3.12/Modules/FindPkgConfig.cmke:489 (message):
  pkg-config tool not found
Call Stack (most recent call first):
  C:/Program Files/CMake/share/cmake-3.12/Modules/FindPkgConfig.cmake:602 (_pkgcheck_modules_internal)
  CMakeLists.txt:59 (PKG_CHECK_MODULES)


CMake Error at C:/Program Files/CMake/share/cmake-3.12/Modules/FindPkgConfig.cmke:489 (message):
  pkg-config tool not found
Call Stack (most recent call first):
  C:/Program Files/CMake/share/cmake-3.12/Modules/FindPkgConfig.cmake:602 (_pkgcheck_modules_internal)
  CMakeLists.txt:60 (PKG_CHECK_MODULES)


CMake Error at C:/Program Files/CMake/share/cmake-3.12/Modules/FindPkgConfig.cmke:489 (message):
  pkg-config tool not found
Call Stack (most recent call first):
  C:/Program Files/CMake/share/cmake-3.12/Modules/FindPkgConfig.cmake:602 (_pkgcheck_modules_internal)
  CMakeLists.txt:61 (PKG_CHECK_MODULES)


--
-- CONFIGURATION SUMMARY
-- png support          : disabled
-- jpeg support         : disabled
-- gio support          : disabled
-- register thumbnailer : disabled
-- unittests            : enabled
-- debug mode           : disabled
CMake Error: The following variables are used in this project, but they are setto NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake fils:
AVCODEC_INCLUDE_DIR
   used as include directory in directory C:/ffmpegthumbnailer-2.2.0
   used as include directory in directory C:/ffmpegthumbnailer-2.2.0
   used as include directory in directory C:/ffmpegthumbnailer-2.2.0
   used as include directory in directory C:/ffmpegthumbnailer-2.2.0
   used as include directory in directory C:/ffmpegthumbnailer-2.2.0
   used as include directory in directory C:/ffmpegthumbnailer-2.2.0
   used as include directory in directory C:/ffmpegthumbnailer-2.2.0/test
   used as include directory in directory C:/ffmpegthumbnailer-2.2.0/test
   used as include directory in directory C:/ffmpegthumbnailer-2.2.0/test
   used as include directory in directory C:/ffmpegthumbnailer-2.2.0/test
AVCODEC_LIBRARY
    linked by target "libffmpegthumbnailer" in directory C:/ffmpegthumbnailer-22.0
AVFILTER_INCLUDE_DIR
   used as include directory in directory C:/ffmpegthumbnailer-2.2.0
   used as include directory in directory C:/ffmpegthumbnailer-2.2.0
   used as include directory in directory C:/ffmpegthumbnailer-2.2.0
   used as include directory in directory C:/ffmpegthumbnailer-2.2.0
   used as include directory in directory C:/ffmpegthumbnailer-2.2.0
   used as include directory in directory C:/ffmpegthumbnailer-2.2.0
   used as include directory in directory C:/ffmpegthumbnailer-2.2.0/test
   used as include directory in directory C:/ffmpegthumbnailer-2.2.0/test
   used as include directory in directory C:/ffmpegthumbnailer-2.2.0/test
   used as include directory in directory C:/ffmpegthumbnailer-2.2.0/test
AVFILTER_LIBRARY
    linked by target "libffmpegthumbnailer" in directory C:/ffmpegthumbnailer-22.0
AVFORMAT_INCLUDE_DIR
   used as include directory in directory C:/ffmpegthumbnailer-2.2.0
   used as include directory in directory C:/ffmpegthumbnailer-2.2.0
   used as include directory in directory C:/ffmpegthumbnailer-2.2.0
   used as include directory in directory C:/ffmpegthumbnailer-2.2.0
   used as include directory in directory C:/ffmpegthumbnailer-2.2.0
   used as include directory in directory C:/ffmpegthumbnailer-2.2.0
   used as include directory in directory C:/ffmpegthumbnailer-2.2.0/test
   used as include directory in directory C:/ffmpegthumbnailer-2.2.0/test
   used as include directory in directory C:/ffmpegthumbnailer-2.2.0/test
   used as include directory in directory C:/ffmpegthumbnailer-2.2.0/test
AVFORMAT_LIBRARY
    linked by target "libffmpegthumbnailer" in directory C:/ffmpegthumbnailer-22.0
AVUTIL_INCLUDE_DIR
   used as include directory in directory C:/ffmpegthumbnailer-2.2.0
   used as include directory in directory C:/ffmpegthumbnailer-2.2.0
   used as include directory in directory C:/ffmpegthumbnailer-2.2.0
   used as include directory in directory C:/ffmpegthumbnailer-2.2.0
   used as include directory in directory C:/ffmpegthumbnailer-2.2.0
   used as include directory in directory C:/ffmpegthumbnailer-2.2.0
   used as include directory in directory C:/ffmpegthumbnailer-2.2.0/test
   used as include directory in directory C:/ffmpegthumbnailer-2.2.0/test
   used as include directory in directory C:/ffmpegthumbnailer-2.2.0/test
   used as include directory in directory C:/ffmpegthumbnailer-2.2.0/test
AVUTIL_LIBRARY
    linked by target "libffmpegthumbnailer" in directory C:/ffmpegthumbnailer-22.0

-- Configuring incomplete, errors occurred!
See also "C:/ffmpegthumbnailer-2.2.0/ffmpegthumbnailer_build/CMakeFiles/CMakeOuput.log".

Coder@Coder-WIN10 /cygdrive/c/ffmpegthumbnailer-2.2.0/ffmpegthumbnailer_build
$

更新 3

Coder@Coder-WIN10 ~
$ cd C:\ffmpegthumbnailer-2.2.0

Coder@Coder-WIN10 /cygdrive/c/ffmpegthumbnailer-2.2.0
$ cd ffmpegthumbnailer_build

Coder@Coder-WIN10 /cygdrive/c/ffmpegthumbnailer-2.2.0/ffmpegthumbnailer_build
$ cmake ../
-- The C compiler identification is GNU 7.3.0
-- The CXX compiler identification is GNU 7.3.0
CMake Warning at /usr/share/cmake-3.6.2/Modules/Platform/CYGWIN.cmake:15 (message):
  CMake no longer defines WIN32 on Cygwin!

  (1) If you are just trying to build this project, ignore this warning or
  quiet it by setting CMAKE_LEGACY_CYGWIN_WIN32=0 in your environment or in
  the CMake cache.  If later configuration or build errors occur then this
  project may have been written under the assumption that Cygwin is WIN32.
  In that case, set CMAKE_LEGACY_CYGWIN_WIN32=1 instead.

  (2) If you are developing this project, add the line

    set(CMAKE_LEGACY_CYGWIN_WIN32 0) # Remove when CMake >= 2.8.4 is required

  at the top of your top-level CMakeLists.txt file or set the minimum
  required version of CMake to 2.8.4 or higher.  Then teach your project to
  build on Cygwin without WIN32.
Call Stack (most recent call first):
  /usr/share/cmake-3.6.2/Modules/CMakeSystemSpecificInformation.cmake:36 (include)
  CMakeLists.txt:26 (PROJECT)


-- 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++.exe
-- Check for working CXX compiler: /usr/bin/c++.exe -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found JPEG: /usr/lib/libjpeg.dll.a
-- Found ZLIB: /usr/lib/libz.dll.a (found version "1.2.11")
-- Found PNG: /usr/lib/libpng.dll.a (found version "1.6.34")
-- Found PkgConfig: /usr/bin/pkg-config.exe (found version "0.29.1")
-- Checking for module 'libavcodec'
--   No package 'libavcodec' found
CMake Error at /usr/share/cmake-3.6.2/Modules/FindPkgConfig.cmake:424 (message):
  A required package was not found
Call Stack (most recent call first):
  /usr/share/cmake-3.6.2/Modules/FindPkgConfig.cmake:597 (_pkg_check_modules_internal)
  CMakeLists.txt:58 (PKG_CHECK_MODULES)


-- Configuring incomplete, errors occurred!
See also "/cygdrive/c/ffmpegthumbnailer-2.2.0/ffmpegthumbnailer_build/CMakeFiles/CMakeOutput.log".

Coder@Coder-WIN10 /cygdrive/c/ffmpegthumbnailer-2.2.0/ffmpegthumbnailer_build
$

【问题讨论】:

  • 有时一个包会提供一个配置选项,比如--disable-docs 或类似的选项。其他时候,您需要通过设置MAKEINFO=true 来欺骗机器。还有一些时候,您需要修补 configure.ac 以删除构建文档的位。
  • 我听说 Makefile.am 用于创建 Makefile 本身。如何激活它?
  • 是的,有时Makefile.am 需要修补。我还看到 [少数] 少数软件包在配置后即时创建 Makefile。也就是说,他们在make 期间构建源代码时创建了makefile。 wgetlibidn{2} 曾经这样做过。从源代码构建包时,要避免构建失败真的很困难。
  • pkg-config 是一个类似make 的构建工具。您可能可以通过 Cygwin 的安装程序安装它。如果README 准确,则需要安装ffmpeg-devellibpng-devel。那应该清除Could NOT find PNG (missing: PNG_LIBRARY PNG_PNG_INCLUDE_DIR)。根据README,其他人不需要(但可能需要)。
  • 好的,我现在试试。

标签: linux windows ubuntu ffmpeg cmake


【解决方案1】:

正如 cmets 中所述,当软件包坚持构建文档时,即使缺少工具,也很难避免构建失败。我经常遇到 Autotools 的问题,但我不记得在 Cmake 上遇到过。无论如何,我都不是 CMake 专家,所以请对以下信息持保留态度。

这可能对你有用。如果这是一个 Autotools 项目,我会做同样的事情:

$ git clone https://github.com/dirkvdb/ffmpegthumbnailer.git
$ cd ffmpegthumbnailer

$ rm -rf man/
$ sed -i '\|/man/|d' CMakeLists.txt

$ mkdir ffmpegthumbnailer_build
$ cd ffmpegthumbnailer_build/

$ cmake ../

上面的sed 是一个简单的match and delete line。它删除了引用文档的配方。 sed 使用条形 | 作为分隔符,因为它与 /man/ 匹配(更改避免了倾斜的牙签)。

$ git diff
diff --git a/CMakeLists.txt b/CMakeLists.txt
index e708812..af3d8c2 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -184,7 +184,6 @@ install(TARGETS ffmpegthumbnailer ${STATIC_LIB} ${SHARED_LIB}
     PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/libffmpegthumbnailer
 )

-install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/man/ffmpegthumbnailer.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1)
 install(FILES ${CMAKE_BINARY_DIR}/libffmpegthumbnailer.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)

 if (ENABLE_THUMBNAILER)

我有一些丢失的包,所以我无法进一步测试它:

$ cmake ../
-- Checking for module 'libavcodec'
--   Package 'libavcodec', required by 'virtual:world', not found
-- Checking for module 'libavformat'
--   Package 'libavformat', required by 'virtual:world', not found
-- Checking for module 'libavutil'
--   Package 'libavutil', required by 'virtual:world', not found
-- Checking for module 'libavfilter'
--   Package 'libavfilter', required by 'virtual:world', not found
CMake Error at /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:137 (message):
  Could NOT find FFmpeg (missing: AVCODEC_FOUND AVFORMAT_FOUND AVUTIL_FOUND
  AVFILTER_FOUND)
Call Stack (most recent call first):
  /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:378 (_FPHSA_FAILURE_MESSAGE)
  cmake/FindFFmpeg.cmake:9 (find_package_handle_standard_args)
  CMakeLists.txt:47 (find_package)

还要注意有一个--disable-manpages Autotools 选项。问题是,没有 Autotools configure.acconfigure

$ grep -IR man
...

.travis.yml:      cd ffmpeg-3.1.3 && ./configure --prefix=/${DEPS_DIR}/local --d
isable-static --enable-shared --disable-avdevice --disable-doc --disable-htmlpag
es --disable-manpages --disable-programs --disable-encoders --disable-muxers --e
nable-swscale --disable-yasm --enable-protocol=file --enable-protocol=http --ena
ble-iconv  && make -j4 install

而且INSTALL 文件没用:

$ cat INSTALL
Basic Installation
==================

Perform cmake configuration:
cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_GIO=ON -DENABLE_THUMBNAILER=ON .

Build the code:
make

Install:
make install

【讨论】:

  • 我也遇到了错误。但是,谢谢你试图帮助我。似乎 ffmpegthumbnailer 注定不能在 Windows 上运行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-24
  • 1970-01-01
  • 1970-01-01
  • 2023-04-05
  • 2021-05-03
  • 1970-01-01
  • 2023-01-27
相关资源
最近更新 更多