我目前正在尝试在Windows 10上构建exe / binary文件以支持 ffmpegthumbnailer 。我阅读了许多有关使其运行的文章,但似乎没有一个能满足我的需求。我目前在 C:\ ffmpegthumbnailer-2.2.0 中存储了ffmpegthumbnailer-2.2.0。我看到一个名为 CMakeFiles , dist , kffmpegthumbnailer , libffmpegthumbnailer ,人,测试和声音文件。在目录中运行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
$
答案 0 :(得分:0)
如评论中所述,当软件包坚持构建文档时,即使缺少工具,要避免构建失败也很棘手。我经常遇到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
自动工具选项。问题是,没有自动工具configure.ac
或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
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