我有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