使用vcpkg 进行下载
在使用vcpkg安装这些库之前,请确保你已经正确安装并配置了vcpkg。以下是在Windows环境下,使用vcpkg安装libpng
, zlib
, mozjpeg
, 和 libjpeg-turbo
的命令序列。这些命令假设你已经在命令行中进入了vcpkg的根目录。
-
安装zlib:
vcpkg install zlib
-
安装libpng:
由于libpng依赖于zlib,vcpkg在安装libpng时会自动处理zlib的依赖关系。vcpkg install libpng
-
安装mozjpeg:
mozjpeg是一个JPEG库,提供更好的压缩效率。vcpkg install mozjpeg
-
安装libjpeg-turbo:
libjpeg-turbo是另一个JPEG库,以其高速度而闻名。请注意,如果你的应用程序只需要一个JPEG库,通常选择libjpeg-turbo或mozjpeg之一即可,除非有特定需求同时使用两者。vcpkg install libjpeg-turbo
注意:
- 在执行安装命令前,如果这是你第一次使用vcpkg,可能需要先运行
.\bootstrap-vcpkg.bat
(Windows)或./bootstrap-vcpkg.sh
(Linux/macOS)来初始化vcpkg。 - 如果你需要为特定的编译器或平台(如x64-windows, x86-windows等)安装这些库,请在库名后加上相应的三段式目标指定符,例如:
vcpkg install libpng:x64-windows
。 - 安装过程中,vcpkg会自动处理依赖项,但有时候可能需要手动解决依赖问题或冲突。
- 成功安装后,要将这些库集成到你的项目中,通常需要设置正确的包含目录和库目录路径,vcpkg提供了方便的集成方法,如通过CMake的find_package或使用vcpkg生成的NuGet包等。可以查看vcpkg的文档获取更详细的集成指南。
补充
在不使用vcpkg 编译 mozjpeg 时,可以手动进行编译,但是以来libpng 和 zlib。 这两个库 可以有vcpkg 生成。
然后修改 mozjpeg的cmake , 让 mozjpeg 自己搜索这两个库 ,但是如果这两个库的路径很远,则需要指定搜索路径。
if(PNG_SUPPORTED)
# to avoid finding shared library from CMake cache
unset(PNG_LIBRARY CACHE)
unset(PNG_LIBRARY_RELEASE CACHE)
unset(PNG_LIBRARY_DEBUG CACHE)
unset(ZLIB_LIBRARY CACHE)
unset(ZLIB_LIBRARY_RELEASE CACHE)
unset(ZLIB_LIBRARY_DEBUG CACHE)
#增加这行================================================
set(CMAKE_PREFIX_PATH "C:/Users/20021/Desktop/vcpkg/packages/libpng_x64-windows;C:/Users/20021/Desktop/vcpkg/packages/zlib_x64-windows;C:/Users/20021/Desktop/vcpkg/packages/libpng_x64-windows/bin;C:/Users/20021/Desktop/vcpkg/packages/zlib_x64-windows/bin")
#增加这行================================================
if(APPLE)
find_package(ZLIB REQUIRED) # macos doesn't have static zlib
endif()
set(CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_STATIC_LIBRARY_SUFFIX})
find_package(PNG 1.6 REQUIRED)
if(NOT APPLE)
find_package(ZLIB REQUIRED)
endif()
target_include_directories(cjpeg-static PUBLIC ${PNG_INCLUDE_DIR} ${ZLIB_INCLUDE_DIR})
target_link_libraries(cjpeg-static ${PNG_LIBRARY} ${ZLIB_LIBRARY})
endif()
add_executable(djpeg-static djpeg.c cdjpeg.c rdcolmap.c rdswitch.c wrgif.c
wrppm.c ${DJPEG_BMP_SOURCES})
set_property(TARGET djpeg-static PROPERTY COMPILE_FLAGS ${COMPILE_FLAGS})
target_link_libraries(djpeg-static jpeg-static)
if(UNIX)
target_link_libraries(djpeg-static m)
endif()
add_executable(jpegtran-static jpegtran.c cdjpeg.c rdswitch.c transupp.c)
target_link_libraries(jpegtran-static jpeg-static)
if(UNIX)
target_link_libraries(jpegtran-static m)
endif()
set_property(TARGET jpegtran-static PROPERTY COMPILE_FLAGS "${USE_SETMODE}")
endif()
和 sharedlib/CMakeLists.txt
if(PNG_SUPPORTED)
# to avoid finding static library from CMake cache
unset(PNG_LIBRARY CACHE)
unset(PNG_LIBRARY_RELEASE CACHE)
unset(PNG_LIBRARY_DEBUG CACHE)
unset(ZLIB_LIBRARY CACHE)
unset(ZLIB_LIBRARY_RELEASE CACHE)
unset(ZLIB_LIBRARY_DEBUG CACHE)
set(CMAKE_PREFIX_PATH "C:/Users/20021/Desktop/vcpkg/packages/libpng_x64-windows;C:/Users/20021/Desktop/vcpkg/packages/zlib_x64-windows;C:/Users/20021/Desktop/vcpkg/packages/libpng_x64-windows/bin;C:/Users/20021/Desktop/vcpkg/packages/zlib_x64-windows/bin")
find_package(PNG 1.6 REQUIRED)
find_package(ZLIB REQUIRED)
target_include_directories(cjpeg PUBLIC ${PNG_INCLUDE_DIR} ${ZLIB_INCLUDE_DIR})
target_link_libraries(cjpeg ${PNG_LIBRARY} ${ZLIB_LIBRARY})
endif()