我正在尝试将我的头文件包含在makefile中,因此每次编辑没有相应cpp文件的头文件时,我都不必make clean && make
。
编辑
到目前为止,我有这个:
# Declaration of variables
CC = g++
CC_FLAGS = -Wall -g
# File names
EXEC = Main
DEPS = MoveLogic.hpp
SOURCES = $(wildcard *.cpp) $(wildcard Pieces/*.cpp)
TARGET = $(SOURCES:.cpp=.o)
TARGET_DEPS = $(DEPS:.hpp=.o)
# Main target
$(EXEC): $(TARGET) $(TARGET_DEPS)
$(CC) $(TARGET) $(TARGET_DEPS) -o $(EXEC)
# To obtain dependanies
%.o: %.hpp
$(CC) $(DEPS) -o $@
# To obtain object files
%.o: %.cpp
$(CC) -c $(CC_FLAGS) $< -o $@
# To remove generated files
clean:
rm -f $(EXEC) $(TEST) $(TARGET)
但我收到了错误
ignoring file MoveLogic.o, file was built for unsupported file format ( 0x43 0x50 0x43 0x48 0x01 0x0C 0x00 0x00 0x27 0x08 0x00 0x00 0x0B 0x02 0x68 0x42 ) which is not the architecture being linked (x86_64): MoveLogic.o
答案 0 :(得分:0)
您不得将标头添加到SOURCE
变量:所有非.cpp
文件的元素都会直接进入要清理的TARGET
。
如果标题名称与您可能使用的源名称相对应:
# To obtain object files
%.o: %.cpp %.h
$(CC) -c $(CC_FLAGS) $< -o $@
然而,你会错过一般的头文件。最好的方法是使用KeithSmith建议的自动拒绝。