C++ 为g++;编译程序

C++ 为g++;编译程序,c++,makefile,g++,C++,Makefile,G++,我有一些代码,每当我想编译时,我都必须在linux shell中执行以下命令(只是一个示例): 在本例中,我的源文件是helloworld.cpp,我希望将其编译到名为sim的文件夹中,该文件夹与源文件所在的文件夹相同 如何使用make或makefile自动化此过程。还有makeclean选项,可以在调用时删除创建的文件夹?轻松 %.o: %.cpp g++ $(YOUR_CXX_FLAGS_HERE) -c $< -o $@ $(YOUR_PACKAGE_NAME_HERE)

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

在本例中,我的源文件是
helloworld.cpp
,我希望将其编译到名为
sim
的文件夹中,该文件夹与源文件所在的文件夹相同

如何使用
make
makefile
自动化此过程。还有
makeclean
选项,可以在调用时删除创建的文件夹?

轻松

%.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
%.o:%.cpp
g++$(您的\u CXX\u标志\u在此)-c$<-o$@
$(您的\u包\u名称\u此处):$(您的\u对象\u此处)
g++$(这里有一些标志)$^-o$@
清洁:
rm$(此处为您的包名)$(此处为您的对象)
.假冒:干净

有很多很好的教程,比如一个。

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

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

sim:

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

隐式规则应该为您处理所有其他问题

您是否尝试过生成文件?如果是这样的话,你可以发布itI,它将研究像CMake这样的自动构建系统,而不是使用手工制作的makefiles。它往往会变得杂乱无章,尤其是当您想要更改目标环境时。
CPPFLAGS := -I. -I$(SYSTEMC_HOME)/include
LDFLAGS  := -L. -L$(SYSTEMC_HOME)/lib-linux64
LDLIBS   := -lsystemc -lm

sim:

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