我正在嘗試創建一個名爲A.a的庫,它提供了一個類A,它依賴於類B和C,它們都在其各自的文件(.cpp
和.hpp
)中。我通常手動編譯我的所有代碼,但隨着文件數量的增加,我想使用makefile。基本上,我會做的是:如何用Gnu製作圖書館?
g++ -c A.cpp
g++ -c B.cpp
g++ -c C.cpp
ar rvs A.a *.o
我怎樣才能構建一個這樣做的生成文件?甚至可以打電話給ar
?
這是我的嘗試:
CC=g++
CFLAGS=-c -Wall
objects=C.o B.o
all : A.o $(objects) #Creates the library called A.a.
:ar rvs A.a A.o $(objects)
A.o : $(objects) A.hpp A.cpp
:$(CC) $(CFLAGS) A.cpp
B.o : B.hpp B.cpp
:$(CC) $(CFLAGS) B.cpp
C.o : C.hpp C.cpp
:$(CC) $(CFLAGS) C.cpp
但似乎我的ar rvs A.a A.o $(objects)
指令未執行,甚至。該生成文件會生成所有正確的.o
文件,但不會將其歸檔。
首先,包含的命令來建立一個目標線必須用製表符前綴。其次,我不確定命令的':'前綴應該做什麼 - 我知道'@'和' - '前綴,但我從來沒有見過':'。除此之外,它看起來應該工作... – twalberg
':'可以使用一個選項卡,正如Gnu官方網站上所述。另外,您可以使用目標:依賴關係; recepy。 – corazza
有趣的......我諮詢的信息文件沒有包含這個小事實(至少不在明顯的位置)。今天有我的「學習新東西」...... – twalberg