这是半超级用户的问题,但我认为它更适合。
我大部分时间都在使用shell,因此IDE不适合我的工作流程。 然而,我更喜欢一个整齐的项目,而不是一个无用的一次性旅行。我发现自己花费太多时间来编写makefile(即使是cmakelists也会花费太多的时间,有时感觉不直观)。
现在我已经给自己写了一个注释,理想的快速构建/脚手架系统会起什么作用,我会来写一些类似的东西,除非已有。我宁愿花一点力气开始自己的。
理想情况下,构建系统可以快速构建项目。
build <project-name> <language>
这只会使用目标制作一个makefile(或其他方便的东西) 指定的名称。它准备它,因此它输出一个名为project-name的可执行文件。
这将规范要编译的源文件:
add source <source-file>
这将规范任何必要的库链接:
add library <library-name>
我更喜欢从shell ad-hoc中调用它,让它创建自己的脚手架,而不是自己制作makefile(或cmakelists)。如果没有,那么为了自动完成。
请记住,除了快速实验或演示之外,这绝不是意味着什么 - 当我不想用手动搭建项目的行为让别人(或我自己)厌烦时。
对我而言,这似乎是一种启动快速C / C ++项目的直观而简单的方法。 那么有这样的事情还是我幻想一下? (诅咒你的webdevs和你太简单的脚手架工具!)
请为快速的C / C ++项目建议一个固定的构建/脚手架系统。
答案 0 :(得分:2)
简单的GNU Makefile,我用于单一来源编程迷你项目,将所有源文件转换为单个二进制makefile非常简单。
CSRC = $(wildcard *.c)
CPPSRC = $(wildcard *.cpp)
CLEANF :=
all:
CFLAGS ?= -O2 -g -fomit-frame-pointer -Wall -Wextra
ifeq ($(V),)
CCS=@echo " CC " $@ && $(CC)
CXXS=@echo " CXX " $@ && $(CXX)
else
CCS=$(CC)
CXXS=$(CXX)
endif
CCMD = $$(CCS) $$(CFLAGS) $$< -o $$@
CPPCMD = $$(CXXS) $$(CFLAGS) $$< -o $$@
define MAKEPROG
$(basename $(1)): $(1)
$(2) $$($(basename $(1))_CFLAGS)
all: $(basename $(1))
CLEANF += $(basename $(1))
endef
clean:
@echo " RM " $@ && $(RM) $(CLEANF)
$(foreach SRC,$(CSRC),\
$(eval $(call MAKEPROG,$(SRC),$(CCMD))))
$(foreach SRC,$(CPPSRC),\
$(eval $(call MAKEPROG,$(SRC),$(CPPCMD))))