1

I am currently trying to build the exe/binary files to support ffmpegthumbnailer on Windows 10. I read multiple posts on getting it to work, but none seem to satisfy my needs. I currently have ffmpegthumbnailer-2.2.0 stored at C:\ffmpegthumbnailer-2.2.0 I see a folder named CMakeFiles, dist, kffmpegthumbnailer, libffmpegthumbnailer, man, test and thunar files. When I run make in the directory, I receive

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

How do I build/make the exec files, so that I can use the PATH variable to find ffmpegthumbnailer?

UPDATE 1: I tried the automake command, but I received the message below

$ 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

UPDATE 2:

I ran cmake and received the message below.

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
$

UPDATE 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
$
Cole Phiper
  • 349
  • 1
  • 13
  • Sometimes a package provides a configure option like `--disable-docs` or a similar option. Other times you need to trick the machinery by setting `MAKEINFO=true`. Yet other times you need to patch `configure.ac` to remove the bits that build docs. – jww Aug 21 '18 at 02:11
  • I hear the Makefile.am is used to create the Makefile itself. How do I activate it? – Cole Phiper Aug 21 '18 at 02:59
  • Yes, sometimes the `Makefile.am` needs patching. I've also seen a [minority] few packages create a `Makefile` on the fly after configure. That is, they create the makefile while building the sources during `make`. `wget` or `libidn{2}` used to do it. It was really tough to avoid the build failures when building the packages from sources. – jww Aug 21 '18 at 04:34
  • `pkg-config` is a build tool like `make`. You can probably install it through Cygwin's setup program. If the `README` is accurate then you need to install `ffmpeg-devel` and `libpng-devel`. That should clear the `Could NOT find PNG (missing: PNG_LIBRARY PNG_PNG_INCLUDE_DIR)`. The others are not needed (but probably desired) according to the `README`. – jww Aug 21 '18 at 04:43
  • Ok, I'll try now. – Cole Phiper Aug 21 '18 at 04:50
  • If you find a solution then post an answer. It will probably help others who experience similar problems. – jww Aug 21 '18 at 07:25
  • I made some progress after installing numerous packages. Including separate g++ and c++ compilers to get me through the process. Right now, I can't seem to build the libavcodec module. Which is the last component. I installed all of the recommended packages from https://libav.org/documentation/platform.html#Compilation-under-Cygwin. My issue is, I don't know what else to do. How can I install libavcodec? – Cole Phiper Aug 21 '18 at 18:32

1 Answers1

0

As stated in the comments it can be tricky to avoid build failures when packages insist on building docs even when the tools are missing. I frequently encounter the problem with Autotools but I don't recall experiencing it on Cmake. I'm not a CMake expert by any stretch of the imagination so take the info below with a grain of salt.

This may work for you. I would do the equivalent if this was an Autotools project:

$ 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 ../

The sed above is a simple match and delete line. It removes the recipe that references the documents. The sed uses the bar | as a delimiter because it is matching /man/ (the change avoids leaning toothpicks).

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

I've got some missing packages so I can't test it further:

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

Also note there is a --disable-manpages Autotools option. The problem is, there's no Autotools configure.ac or configure:

$ 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

And the INSTALL file is useless:

$ 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
jww
  • 97,681
  • 90
  • 411
  • 885
  • I too ran into an error. But, thanks for trying to help me. It seems like ffmpegthumbnailer wasn't destined to work on Windows. – Cole Phiper Aug 21 '18 at 04:38