У меня есть 4 файла '.cpp' и 1 заголовочные файлы:простая задача Makefile (с простой зависимостью)
Tools.cpp
Code1.cpp
Code2.cpp
Code3.cpp
and Tools.hh
Теперь все Code1.cpp, Code2.cpp, Code3.cpp
использовать функции, хранящиеся в Tools.cpp
.
В настоящее время, что я делаю, чтобы собрать все из них использует этот простой скрипт:
#!/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
Вам не нужно ничего, make должен иметь возможность выводить команду build самостоятельно. Или сделайте это как greyfade, не завися от make-файла. – unwind