有没有人有关于在c ++源代码中检查main函数是否存在的想法,因为我想编写一个有点自动的makefile,这样带有main函数的c ++源代码将被链接,而没有main函数的c ++源代码将无法链接.
词法或语法分析可能不适合这个简单的任务.
任何现有的命令行工具或库对此自动任务都非常有用.
谢谢你的任何想法!
makefile文件:
VPATH = include
CPPFLAGS += -I include
CFLAGS += -I include
C_SOURCE := $(shell find . -iname '*.c')
CPP_SOURCE := $(shell find . -iname '*.cpp')
D_OBJ := $(subst .cpp,.d, $(CPP_SOURCE))
EXE := $(subst .c,, $(C_SOURCE))
EXE += $(subst .cpp,, $(CPP_SOURCE))
.PHONY: all
all: $(EXE)
include $(D_OBJ)
$(D_OBJ): %.d: %.cpp
$(CC) -MM $(CPPFLAGS) $< > $@.temp;
auto_depend_gen $@ "$@.temp" > $@;
rm -rf $@.temp
#print_msg:
# @printf "$(EXE)\n"
# @printf "$(D_OBJ)\n"
.PHONY: clean
clean:
rm $(EXE) $(D_OBJ)
Run Code Online (Sandbox Code Playgroud)
所以这是一个自动依赖生成makefile.使用这个makefile,每次添加C++源文件时都不需要修改makefile.标题由"gcc -MM"命令确定,我想要链接的目标文件与除后缀之外的头文件共享相同的名称.auto_depend_gen是我自己编写的程序,只删除"gcc -MM"生成的文件第一行的.o后缀.
有些源文件有主要功能,有些没有,所以出现了这个问题.
也许更普遍的问题是:虽然Java项目可以自动构建,但是多个.class文件具有主函数,但C++不能.所以我只是想解决它.
感谢更多评论!