distclean——清理規則之王

一、作用

distclean是指清理Makefile生成的中間文件以及目標文件,包括生成的動態庫和靜態庫等。通常使用make distclean命令將代碼目錄還原到乾淨的狀態,方便進行下一次編譯。

distclean是整個清理規則中最嚴格、最全面的,幾乎可以把所有的編譯生成物全部刪除。

distclean實際上是clean和mrproper的結合體,它不但清理已生成的二進制文件和中間編譯文件,還會清除軟件生成的配置文件,以及一些可能會改變編譯結果的文件。

二、翻譯

‘clean’是乾淨的意思,’dist’代表distribution,即發布版本。所以distclean就是將發布版本還原到編譯前的乾淨狀態。

三、指令

使用distclean指令時需要注意的是,它會將除原始代碼外所有文件都刪除,包括可執行文件、obj文件以及庫文件等。為確保安全,很多程序在執行distclean指令時會出現提示,要求用戶手動確認。

四、由來

distclean最早出現在Unix的make工具中,主要作用是用來刪除編譯過程中生成的文件以及編譯出錯後的文件。後來,隨着軟件發布的需求增加,distclean逐漸演變成了清理整個代碼目錄的通用規則。如今,distclean已經成為了許多開源軟件項目清理的必備規則,包括Linux內核、Python等。

五、使用例子

以CMake為例:

cmake_minimum_required(VERSION 2.6)
project(test)

add_executable(test main.c)

# 添加distclean指令
add_custom_target(distclean
                  COMMAND ${CMAKE_BUILD_TOOL} clean
                  COMMAND ${CMAKE_COMMAND} -P ${CMAKE_SOURCE_DIR}/clean-all.cmake
                  )

# 清理腳本
file(WRITE ${CMAKE_SOURCE_DIR}/clean-all.cmake
  "
  # 清理編譯生成的文件
  file(REMOVE \${CMAKE_BINARY_DIR}/CMakeCache.txt)
  file(REMOVE \${CMAKE_BINARY_DIR}/Makefile)
  file(REMOVE \${CMAKE_BINARY_DIR}/cmake_install.cmake)
  file(REMOVE \${CMAKE_BINARY_DIR}/CMakeFiles)
  
  # 清除生成的結果文件
  file(GLOB_RECURSE files_to_remove
       \${CMAKE_BINARY_DIR}/
       facit-*
       *.nav
       *.aux
       *.toc
       *.out
       *.log
       *.blg
       *.bbl
       *.dvi
       *.pdf
      )
  if(files_to_remove)
    message(\"Distclean running: removing generated results\")
    file(REMOVE \${files_to_remove})
  endif()

  # 清理生成的測試文件
  file(REMOVE \${CMAKE_BINARY_DIR}/testoutput_*.txt)
  "
)

上述CMakeLists.txt中定義了一個名為distclean的自定義指令,它主要執行以下操作:

  • 清理編譯生成的文件(CMakeCache.txt、Makefile、cmake_install.cmake、CMakeFiles)
  • 清除編譯過程中生成的結果文件(facit-*、.nav、.aux、.toc、.out、.log、.blg、.bbl、.dvi、.pdf)
  • 清除生成的測試輸出文件(testoutput_*.txt)

執行make distclean指令時,會按照上述規則進行清理,確保代碼目錄乾淨,除非重新編譯,否則不會有殘留文件。

六、總結

distclean作為清理規則之王,不僅廣泛運用於開源軟件項目的編譯和部署中,也給我們的編程工作帶來了很大的方便。不過,要注意在使用distclean指令時,一定要謹慎操作,否則可能會導致數據丟失甚至系統崩潰。

原創文章,作者:WEYX,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/147550.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
WEYX的頭像WEYX
上一篇 2024-11-01 14:09
下一篇 2024-11-01 14:09

相關推薦

  • 解析URI編碼規則

    URI(統一資源標識符)是用來標識互聯網上資源的字符串文本標識符,是訪問互聯網資源的地址。在將URI傳送到服務器或瀏覽器時,需要進行特定編碼處理,這個編碼方式就是URI編碼規則。 …

    編程 2025-04-28
  • Python編寫規則用法介紹

    Python作為一種廣泛使用的高級編程語言,其編寫規則的規範性對於提高代碼可讀性、美觀度以及方便調試、維護至關重要。本文將從命名規則、注釋規則、代碼縮進等多個方面進行詳細的闡述,希…

    編程 2025-04-28
  • Python縮進規則用法介紹

    本文將從多個方面對Python的縮進規則進行詳細的闡述。 一、規則解答 Python中縮進是語法的一部分,它決定了程序的結構和邏輯。Python縮進規則要求同一層級的代碼必須保持相…

    編程 2025-04-28
  • LL(1)語法分析器:從語法規則到語法樹

    在編譯原理中,語法分析是編譯器的一個重要階段。語法分析器的作用是將代碼轉換成語法樹,以便後續階段進行處理。LL(1)語法分析器是語法分析器的一種,它採用的是自頂向下的分析方法,可以…

    編程 2025-04-25
  • makefile編寫規則詳解

    一、目標、依賴和命令 makefile中最基本的幾個構成部分就是目標、依賴和命令。目標是我們要生成的文件,依賴是生成目標所需要的文件或者其他目標,命令則是生成目標的具體步驟。 ta…

    編程 2025-04-23
  • Linux下查看防火牆規則

    一、iptables是什麼? 在Linux系統中,如果想要查看防火牆規則,則需要使用iptables命令,它是一個在Linux內核中提供的防火牆軟件,可用於配置和管理netfilt…

    編程 2025-04-22
  • 青龍定時規則詳解

    一、青龍定時規則一年 青龍定時規則一年,即是在一年的某個特定時間運行任務。這種定時規則可通過青龍面板的“定時任務”功能實現。具體操作步驟如下: 1. 進入青龍面板並登錄 2. 點擊…

    編程 2025-04-13
  • Groovy規則引擎:從入門到實踐

    一、Groovy規則引擎簡介 Groovy規則引擎是基於動態語言Groovy開發的一款規則引擎。它可以輕鬆處理不同的規則類型,如比較、條件、邏輯和算術等。Groovy規則引擎在應用…

    編程 2025-04-12
  • 貝葉斯規則:理解和應用

    一、基本概念 貝葉斯規則(Bayes Rule)是一種基於概率論的數學方法,用來求解條件概率。它的核心思想是:在已知某個條件下,求另一個事件發生的概率。 用數學符號表示,如果A和B…

    編程 2025-02-25
  • d3.js教程-讓你快速上手數據可視化之王

    d3.js是一個用於數據可視化的JavaScript庫。它基於Web標準,能夠讓你用最少的代碼寫出各種各樣的圖表和可視化效果,支持自定義交互和動畫效果,可以讓你輕鬆展示和傳達數據背…

    編程 2025-02-25

發表回復

登錄後才能評論