我有一些代码,每次我想编译我都要在linux shell中执行以下命令(只是一个例子):
$g++ -I. -I$SYSTEMC_HOME/include -L. -L$SYSTEMC_HOME/lib-linux64 -o sim helloworld.cpp -lsystemc -lm
在此示例中,我的源文件为helloworld.cpp
,我希望将其编译在源文件所在的同一文件夹中名为sim
的文件夹中。
如何使用make
或makefile
自动执行此过程。还有make clean
选项可以在调用时删除创建的文件夹吗?
答案 0 :(得分:1)
易
%.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一个。
答案 1 :(得分:1)
如果将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
隐式规则应该为您处理其他所有事情