Есть ли у кого-нибудь идеи по проверке существования главной функции в источнике c ++, так как я хочу написать несколько автоматический make-файл, чтобы исходники c ++ с main функцией были связаны, а те, у которых нет функции main, не будут связаны.
Лексический или грамматический разбор может не подойти для этой простой задачи.
Любые существующие инструменты или библиотеки командной строки будут очень полезны для этой автоматической задачи.
Спасибо залюбые идеи!
Файл 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)
Так что это make-файл автоматической генерации зависимостей.С этим make-файлом мне не нужно изменять make-файл каждый раз, когда я добавляю исходный файл C ++.Заголовки определяются командой "gcc -MM", и объектные файлы, которые я хочу связать, имеют одно и то же имя с файлами заголовков, за исключением суффиксов.auto_depend_gen - это программа, написанная мной, которая просто удаляет суффикс .o первой строки файла, сгенерированного "gcc -MM".
Некоторые исходные файлы имеют функцию main, а некоторые - нет, поэтому возникает эта проблема.
Возможно, более общий вопрос заключается в том, что проект Java может быть построен автоматически с использованием несколькихФайлы .class, имеющие основную функцию, но C ++ не может.Поэтому я просто хочу решить эту проблему.
Оцените больше комментариев!