我有4 '的.cpp' 文件和1個文件:簡單的makefile問題(用一個簡單的依賴性)
Tools.cpp
Code1.cpp
Code2.cpp
Code3.cpp
and Tools.hh
現在所有Code1.cpp, Code2.cpp, Code3.cpp
使用存儲在Tools.cpp
功能。
目前,我做什麼來編譯所有的人都用這個 簡單的shell腳本:
#!/bin/bash
echo "compiling Code1.cpp";
g++ Code1.cpp Tools.cpp -o Code1
echo "compiling Code2.cpp";
g++ Code2.cpp Tools.cpp -o Code2
echo "compiling Code3.cpp";
g++ Code3.cpp Tools.cpp -o Code3
這一切工作正常。
現在我想用標準的makefile來做這件事。 但是,爲什麼這並不」工作:
CXX = g++
TOOLSRC = Tools.cpp Code1.cpp Code2.cpp \
Code3.cpp
TOOLSINC = Tools.hh
all: Code1 Code2 Code3
Code1: $(TOOLSRC) $(TOOLSINC) makefile
$(CXX) $^ -o [email protected]
Code2: $(TOOLSRC) $(TOOLSINC) makefile
$(CXX) $^ -o [email protected]
Code3: $(TOOLSRC) $(TOOLSINC) makefile
$(CXX) $^ -o [email protected]
我得到的錯誤是這樣的:
ld: warning in makefile, file is not of required architecture
ld: duplicate symbol neighbors(std::vector<int, std::allocator<int> >&, int, int)in /var/folders/Yx/YxKmmyVPGpakdPL4St7X6++++TI/-Tmp-//ccQCrGHe.o and /var/folders/Yx/YxKmmyVPGpakdPL4St7X6++++TI/-Tmp-//ccreq9YU.o
collect2: ld returned 1 exit status
make: *** [FindNeighbours] Error 1
我怎樣才能糾正錯誤?
嗨,有什麼替代$ ^呢? – neversaint 2009-02-20 07:38:18
你不應該需要任何東西,make應該能夠推導出自己的構建命令。或者按照greyfade的建議做,不依賴於makefile。 – unwind 2009-02-20 07:56:39