在MakeFile中包含标头

时间:2014-01-26 15:47:51

标签: c++ makefile header-files

我正在尝试将我的头文件包含在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

1 个答案:

答案 0 :(得分:0)

您不得将标头添加到SOURCE变量:所有非.cpp文件的元素都会直接进入要清理的TARGET

如果标题名称与您可能使用的源名称相对应:

# To obtain object files
%.o: %.cpp %.h
    $(CC) -c $(CC_FLAGS) $< -o $@

然而,你会错过一般的头文件。最好的方法是使用KeithSmith建议的自动拒绝。