Makefile和版本控制系統git的使用

2021-09-24 23:35:45 字數 2099 閱讀 1644

在乙個專案中,往往有多個c檔案,這些原始檔按其型別、功能和模組被放在各個不同的目錄下,makefile定義了一系列的規則來指定哪些檔案需要先編譯,哪些檔案需要後編譯,甚至是更複雜的功能操作,makefile就像乙個shell指令碼一樣,其中也可以執行作業系統的命令。

在linux(unix)環境下可以使用gnu的make工具構建乙個過程,整個工程的編譯只需要乙個命令。這依賴於makefile檔案。所要完成的makefile 檔案描述了整個工程的編譯、連線等規則。

makefile的通用結構如下:

#  	以"#"開頭的行表示注釋

# 第一條目標為總的目標

# 在目標後跟著該目標的依賴,依賴可以是檔案,目錄或為其他目標

# 動作可以是linux命令,動作所在的一行必須用[tab]開頭。

target: depend1 depend2 depend3 ...

[tab] action1

[tab ] action2

target1:

[tab] action1

[tab] action2

下面是乙個簡單的makefile檔案,用於生成乙個名為hello的可執行檔案和hello.i的只進行了預處理的檔案,而當我們執行make clean時就會刪除當前目錄下的這兩個檔案,而使用make install則會把這兩個檔案儲存到當前目錄下乙個名為hello_world的資料夾下,make uninstall則會刪除./hello_world 資料夾下的這兩個檔案。

cc=gcc

ar=ar

instpath=./hello_world

all:

$(cc) hello.c -o hello

$(cc) -e hello.c -o hello.i

clean:

rm -f hello hell0.i

install:

cp -f hello hello.i ./hello_world

uninstall:

rm -f ./hello_world/hello ./hello_world/hello.i

常見的版本控制系統有cvs、git、mercurial、subversion等,目前用得最多、主流的版本控制系統主要是svn和git,我們可以自己在linux和windows搭建相應的svn或git伺服器。

先來說明git和svn的區別:

1.git是分布式的,svn是集中式管理;

2.git把內容按元資料方式增量儲存,而svn是按檔案; <.svn .git .cvs>

3.git分支和svn的分支(branch)概念不同;

4.git的內容完整性要優於svn:git內容儲存使用的是sha-1雜湊演算法;

5.svn有乙個全域性的整數編號,而git則是乙個sha-1值作編號:

6.svn控制粒度可以到某個目錄(當然很少這樣做);而git一般是整個專案;

git clone 你自己的倉庫位址
git add 要提交的檔名

git commit -m"關於此次提交的一些注釋資訊"

git push

當你是第一次提交時,必須配置使用者名稱和郵箱,提交的日誌會記錄誰提交或是修改了檔案。

6)當你在git倉庫下不小心刪除了硬碟上的某個檔案時,我們可以通過

git checkout
命令把刪除掉的檔案從.git 隱藏檔案中檢出來。當你不小刪除了伺服器上的**時,則可以先使用以下命令

git log
該命令將顯示出你提交的**的各個版本號,你可以選擇乙個未刪除你所需要的檔案的版本號,然後再使用以下命令

git reset --hard 8bdd57804ca

git push origin head --force

第乙個命令即指定回退到某個版本號,第二個命令則讓該操作生效。

7)使用git的可以進行多使用者協同開發。假設a和b都從git伺服器上拷貝了**,當a修改了某個檔案後,再上傳到git伺服器,這時b可以使用git pull 命令就獲取到伺服器上最新的**。

版本控制系統

linux一直痛恨的cvs及svn都是集中式的版本控制系統,而git是分布式版本控制系統,集中式和分布式版本控制系統有什麼區別呢?1 集中式版本控制系統 代表 svn cvs 版本庫是集中存放在 伺服器的,而幹活的時候,用的都是自己的電腦,所以要先從 伺服器取得最新的版本,然後開始幹活,幹完活了,再...

版本控制系統

github是全球最大的開源專案託管平台,這個平台在技術領域也非常有影響力,託管必然離不開版本控制,下面就介紹一下版本控制系統。q1 什麼是版本控制系統?a 版本控制系統的英文名叫做vcs version control system 版本控制系統是以記錄目錄或檔案的改變為基礎的。試想一下,如果沒有...

git版本控制系統

總結 1.初始化乙個git倉庫,使用 git init 命令 2.新增檔案到git倉庫分兩步 第一步,使用命令 git add file 注意,可反覆多次使用,新增多個檔案 第二步,使用命令 git commit 完成小結 1 head 指向的是當前版本,因此可以使用 git reset hard ...