我目前正在尝试构建exe/二进制文件,以支持windows 10上的ffmpegthumbnailer。我读了很多关于让它工作的文章,但似乎没有一篇能满足我的需要。我目前有ffmpegthumbnailer-2.2.0存储在c:\ ffmpegthumbnailer-2.2.0我看到一个名为cmakefiles、dist、kffmpegthumbnailer、libffmpegthumbnailer、man、test和thunar文件的文件夹。当我在目录中运行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
$
最佳答案
如注释中所述,当包坚持构建文档(即使缺少工具)时,避免构建失败是很困难的。我经常遇到自动工具的问题,但我不记得在cmake上遇到过。我并不是一个CMAKE专家,所以请注意下面的信息。
这可能对你有用。如果这是一个自动工具项目,我也会这么做:
$ 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
使用bar|
作为分隔符,因为它与/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
关于linux - 无法使用Windows 10的Cygwin在ffmpegthumbnailer设置文件上使用Makefile,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51940307/