最后活跃于 1722969073 Unlisted

Scaffold script for running C code

onyx_online's Avatar onyx_online 修订了这个 Gist 1722969073. 跳至此修订

1 file changed, 56 insertions

scaffold.sh(file created)

@@ -0,0 +1,56 @@
1 + #!/usr/bin/env bash
2 +
3 + name=$1
4 +
5 + if [ -d "$name" ]; then
6 + echo "program $name already exists"
7 + exit 1
8 + fi
9 +
10 + mkdir -p "$name"/{src,include}/
11 + touch "$name"/makefile
12 +
13 + cat <<EOT >> "$name"/makefile
14 + program = $name
15 +
16 + CC = gcc
17 + SRC_DIR := src
18 + OBJ_DIR := obj
19 + BIN_DIR := bin
20 + INCLUDES := -Iinclude
21 +
22 + EXE := \$(BIN_DIR)/\$(program).out
23 + SRC := \$(wildcard \$(SRC_DIR)/*.c)
24 + OBJ := \$(SRC:\$(SRC_DIR)/%.c=\$(OBJ_DIR)/%.o)
25 +
26 + CPPFLAGS := \$(INCLUDES) -MMD -MP
27 + CFLAGS = -O -Wall -W -pedantic -ansi -std=c99
28 + LDFLAGS := -Llib
29 + LDLIBS := -lm
30 +
31 + .PHONY: all clean
32 +
33 + all: \$(EXE)
34 +
35 + \$(EXE): \$(OBJ) | \$(BIN_DIR)
36 + \$(CC) \$(LDFLAGS) \$^ \$(LDLIBS) -o \$@
37 +
38 + \$(OBJ_DIR)/%.o: \$(SRC_DIR)/%.c | \$(OBJ_DIR)
39 + \$(CC) \$(CPPFLAGS) \$(CFLAGS) -c $< -o \$@
40 +
41 + \$(BIN_DIR) \$(OBJ_DIR):
42 + @mkdir -p \$@
43 +
44 + clean:
45 + @rm -rv \$(BIN_DIR) \$(OBJ_DIR)
46 +
47 + -include \$(OBJ:.o=.d)
48 + EOT
49 +
50 + cat <<EOT >> "$name"/src/"$name".c
51 + /********************************************************************************
52 + C Programming (2nd ed.) A Modern Approach, by
53 + K. N. King
54 + ISBN: 9780393871845
55 + ********************************************************************************/
56 + EOT
更新 更早