對現有的一個C++動態庫文件和調用程序,分別編寫Makefile文件,從零開始,這里把自己弄明白的一些東西分享給大家。
1、必須明確Linux下,C++的編譯器是g++,C語言的是gcc。網上大多數又是以.c文件編寫的makefile示例,所用的編譯器是gcc,如果C++寫成了gcc,C語言中沒有類,會顯示class未知的定義錯誤。
2、當有一個或多個動態庫時,應該為每個動態庫都寫一個Makefile文件,為調用動態庫的程序寫一個Makefile文件,而不是寫在一起,這樣才方便之后的修改維護。
3、Makefile的基本語句是確定的,當我們要使其易修改時,會預先定義一些變量,代表文件所在的路徑,其實路徑是可以組合的,我們要寫的就是讓編譯器能找到需要的文件。
介紹我需要寫makefile文件時的情況。一個動態庫文件,動態庫文件中引用了外部的頭文件。Makefile文件執行編譯的時候,先將.cpp文件轉換成.o文件,在這個構成中依賴.cpp文件(源文件),以及.cpp中引用了的頭文件。
一句句解釋上面這個為動態庫文件寫的Makefile文件:
1' CC指定編譯器是g++,代表C++編譯器,后面出現的CC都表示g++;
2' INCLUDE指定頭文件路徑,一般的,程序自己寫的頭文件用相對路徑,如果不是把動態庫文件的頭文件復制到自己寫的工程文件中的話,就用絕對路徑指向動態庫文件的頭文件;有多個頭文件路徑需要添加時,在路徑前添加-I,不要有空格;
3' DLL_OBJ代表要生成的動態庫文件
4' 5' 設定目錄