<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      CMake構建學習筆記6-giflib庫的構建

      前面構建的zlib、libpng、libjpeg和libtiff都提供了CMakeList.txt文件,因此都可以通過CMake進行構建。不過有的依賴庫是并沒有CMakeList.txt文件,也就是官方沒有提供CMake的構建方式,例如本篇要說的GIFLIB。GIFLIB是一個開源的C庫,用于處理GIF(圖形交換格式)圖像文件。

      GIFLIB是個典型的基于Linux環境的開源庫,使用Makefile組織項目配置文件,在Linux環境中通過make工具進行構建。那么在Windows下如何進行構建呢?其中一個方案是安裝MSYS2(Minimal SYStem 2),它是一個基于Windows的類Unix shell環境,能夠提供一個包括make工具的跨平臺GNU工具鏈,被稱為MinGW(Minimalist GNU for Windows)。不過這種方案很麻煩,最關鍵的是Windows下MinGW編譯的庫和MSVC編譯的動態庫可能存在二進制兼容的問題。

      另外一種方案是,如果庫的代碼量并不大,可以自己組織CMakeList.txt文件進行編譯,這里筆者在網上找到了某個大神組織的GIFLIB項目的CMakeList.txt文件:

      # 輸出cmake版本提示
      message(STATUS "The CMAKE_VERSION is ${CMAKE_VERSION}.")
      
      # cmake的最低版本要求
      cmake_minimum_required (VERSION 3.10)
      
      # 工程名稱、版本、語言
      project(giflib VERSION 5.2.2)
      
      # 支持當前目錄
      set(CMAKE_INCLUDE_CURRENT_DIR ON)
      
      # 判斷編譯器類型
      message("CMAKE_CXX_COMPILER_ID: ${CMAKE_CXX_COMPILER_ID}")
      
      # 源代碼文件
      set(GIF_SRC dgif_lib.c egif_lib.c gifalloc.c gif_err.c gif_font.c gif_hash.c openbsd-reallocarray.c)
      set(GIF_HEADER gif_hash.h  gif_lib.h  gif_lib_private.h)
      #set(GIF_UTILSRC qprintf.c quantize.c getarg.c)
      #set(GIF_UTILHEADER getarg.h)
      
      # 動態庫前綴與后綴
      IF(CMAKE_SYSTEM_NAME MATCHES "Linux")
      	set(LibraryPrefix lib)
          set(LibraryPostfix so)
      ELSEIF(CMAKE_SYSTEM_NAME MATCHES "Windows")
      	set(LibraryPrefix )
          set(LibraryPostfix lib)
      ENDIF()
      
      # 將源代碼添加到此項目的可執行文件。
      add_library(${PROJECT_NAME} SHARED ${GIF_SRC} ${GIF_HEADER})
      
      # 判斷編譯器類型
      if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
          message(">> using Clang")
      elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
          message(">> using GCC")
      elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel")
          message(">> using Intel C++")
      elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
          message(">> using Visual Studio C++")	  
          add_compile_options(/utf-8 /wd4996)   
          set_property(TARGET ${PROJECT_NAME} PROPERTY LINK_FLAGS
          /DEF:"${CMAKE_SOURCE_DIR}/giflib.def")
      else()
          message(">> unknow compiler.")
      endif()
      
      # TODO: 如有需要,請添加測試
      
      # 安裝頭文件到 include 目錄
      install(FILES gif_lib.h DESTINATION include)
      
      # 安裝庫文件到 lib 目錄
      install(TARGETS ${PROJECT_NAME}
              LIBRARY DESTINATION lib  # 對于共享庫
              ARCHIVE DESTINATION lib  # 對于靜態庫
              RUNTIME DESTINATION bin  # 對于可執行文件
      )
      

      基于這個CMakeList.txt,筆者組織了GIFLIB的5.2.2版本,關鍵的構建指令如下所示:

      # 配置CMake  
      cmake .. -G "$Generator" -A x64 -DCMAKE_CONFIGURATION_TYPES=RelWithDebInfo -DCMAKE_INSTALL_PREFIX="$InstallDir"
      
      # 構建階段,指定構建類型
      cmake --build . --config RelWithDebInfo
      
      # 安裝階段,指定構建類型和安裝目標
      cmake --build . --config RelWithDebInfo --target install
      
      posted @ 2024-08-25 23:07  charlee44  閱讀(348)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 欧美亚洲另类制服卡通动漫| 正镶白旗| 亚洲日韩国产二区无码| 自拍偷区亚洲综合第二区| 国产三级视频网站| 亚洲精品日韩久久精品| 少妇性bbb搡bbb爽爽爽欧美| 国产熟睡乱子伦视频在线播放| 无码h片在线观看网站| 国产精品一区二区三区黄| 久久永久视频| 亚洲国产色婷婷久久99精品91| 一区二区精品久久蜜精品| 国产精品无码dvd在线观看| av天堂午夜精品一区| 国产精品熟女亚洲av麻豆| 中文字幕无码av激情不卡 | 婷婷99视频精品全部在线观看| 成人永久免费A∨一级在线播放| 精品人妻二区中文字幕| 极品美女自拍偷精品视频| 国产精品天堂蜜av在线播放| 国产婷婷精品av在线| 精品自拍自产一区二区三区 | 福利视频在线一区二区| 精品国产精品国产偷麻豆| 国产果冻豆传媒麻婆精东| 国产在线一区二区在线视频| 国产一区二区波多野结衣| 横峰县| 色综合久久综合中文综合网| 欧美综合婷婷欧美综合五月| 国产性色的免费视频网站 | 人妻少妇偷人一区二区| 平湖市| 亚洲欧美电影在线一区二区| 久久夜色精品国产亚av| 国产成人毛片无码视频软件| 最新精品国产自偷在自线| 最新亚洲人成网站在线影院| 亚洲日本VA中文字幕在线|