为 g++ 编译器创建一个 makefile

Creating a makefile for g++ compiler

我有一些代码,每次我想编译时,我都必须在 linux shell 中执行以下命令(只是一个例子):

$g++ -I. -I$SYSTEMC_HOME/include -L. -L$SYSTEMC_HOME/lib-linux64 -o sim helloworld.cpp -lsystemc -lm

在这个例子中,我的源文件是 helloworld.cpp,我希望它在源文件所在的同一文件夹中名为 sim 的文件夹中编译。

如何使用 makemakefile 自动执行此过程。如果调用,还有 make clean 选项删除创建的文件夹?

简单

%.o: %.cpp
     g++ $(YOUR_CXX_FLAGS_HERE) -c $< -o $@

$(YOUR_PACKAGE_NAME_HERE): $(YOUR_OBJECTS_HERE)
     g++ $(SOME_LDFLAGS_HERE) $^ -o $@

clean:
     rm $(YOUR_PACKAGE_NAME_HERE) $(YOUR_OBJECTS_HERE)

.PHONY: clean

那里有很好的教程,比如 this 一个。

如果将 cpp 文件重命名为 sim.cpp 这可能是最简单的 Makefile

CPPFLAGS := -I. -I$(SYSTEMC_HOME)/include
LDFLAGS  := -L. -L$(SYSTEMC_HOME)/lib-linux64
LDLIBS   := -lsystemc -lm

sim:

.PHONY: clean
clean: ; $(RM) sim

隐式规则应该为您处理所有其他事情