BASH脚本(ok2makefile):生成带有makefile的C++ "Hello world"程序
2012-06-24 21:07
549 查看
这个脚本也是闲着没事儿准备以后用的,应用场景:“在Linux下开发C++项目的时候,有时候需要临时创建一个简单的C++工程来尝试一些用法,但是全新编写一个带有makefile的hello world还是需要几分钟时间的,也是个反复的活儿,要是有个命令能够一下子生成一个目录,里边含有main.cc和makefile就好了。”
如果你也会经常遇到这种场景,到可以试试ok2makefile.sh脚本,很爽的哦!
建议用法:
Step 1: 拷贝这个ok2makefile.sh脚本到目录"~/bin"。
Step 2: 创建一个命令以备后用,当然得放在"~/.bashrc"中。
Step 3: 使用这个命令创建一个简易C++工程。
全部操作如下:
下边就是ok2makefile.sh脚本内容:
大家也参与讨论一下,是不是你也在Linux下工作的时候有一些突发奇想的需求呢?围绕“如果有一个脚本可以XXX就好了。”
如果你也会经常遇到这种场景,到可以试试ok2makefile.sh脚本,很爽的哦!
建议用法:
Step 1: 拷贝这个ok2makefile.sh脚本到目录"~/bin"。
Step 2: 创建一个命令以备后用,当然得放在"~/.bashrc"中。
Step 3: 使用这个命令创建一个简易C++工程。
全部操作如下:
xiwang@ubuntu:~/Dev/ok2makefile$ mkdir -p ~/bin xiwang@ubuntu:~/Dev/ok2makefile$ cp ok2makefile.sh ~/bin xiwang@ubuntu:~/Dev/ok2makefile$ echo 'alias ok2makefile="~/bin/ok2makefile.sh"' >>~/.bashrc xiwang@ubuntu:~/Dev/ok2makefile$ . ~/.bashrc xiwang@ubuntu:~/Dev/ok2makefile$ ok2makefile -n mydemo mydemo created. # 尝试使用 xiwang@ubuntu:~/Dev$ ok2makefile -n mydemo mydemo created. xiwang@ubuntu:~/Dev$ cd mydemo/ xiwang@ubuntu:~/Dev/mydemo$ ls main.cc makefile xiwang@ubuntu:~/Dev/mydemo$ make g++ -Wall -I. -D_DEBUG -c main.cc -o main.cc.o g++ -D_DEBUG -L. main.cc.o -o mydemo -lpthread xiwang@ubuntu:~/Dev/mydemo$ ./mydemo Hello World!
下边就是ok2makefile.sh脚本内容:
#!/bin/bash # ok2makefile.sh, 2012-06-23 T1110 # Generate a very simple project with makefile for c/c++, java, etc. # # OPTIONS # -n name | --name name # Name of demo, default "MyTEST" WORKDIR=$PWD while [ $# -ne 0 ]; do case "$1" in -n|--name) ARG_NAME="$2"; export ARG_NAME shift; shift; ;; -h|--help) echo "ok2makefile -n name" shift; exit 0 ;; *) echo "error, see by <$0 -h>" shift; exit 0 ;; esac done # $1 => name confirm_name() { test ! -z "$1" || { ARG_NAME="MyTEST"; export ARG_NAME } test ! -d "$1" || { echo "option <-n name> is required incorrectly." exit 1 } } confirm_name "$ARG_NAME" # mkdir $NAME mkdir -p $ARG_NAME cd $ARG_NAME touch makefile touch main.cc # create makefile cat <<EOF >makefile # Makefile, 2012-06-23 T1110 # TODO # ---------------------------------- NAME = $(echo $ARG_NAME | tr '[:upper:]' '[:lower:]') VERSION = 1.0.0 RELEASE = 01 # ---------------------------------- BIN = \$(NAME) OBJS = \$(patsubst %.cpp,%.cpp.o,\$(wildcard \$(SRC_DIR)/*.cpp)) OBJS += \$(patsubst %.cc,%.cc.o,\$(wildcard \$(SRC_DIR)/*.cc)) OBJS += \$(patsubst %.C,%.C.o,\$(wildcard \$(SRC_DIR)/*.C)) # TODO # BEGIN ---------------------------------- # Folders SRC_DIR = . # Flags CXXFLAGS = -Wall CXXFLAGS += -I\$(SRC_DIR) CPPFLAGS = -D_DEBUG LDFLAGS = -L\$(SRC_DIR) LIBS = -lpthread # END ---------------------------------- .PHONY: all clean all: \$(BIN) \$(BIN): \$(OBJS) \$(CXX) \$(CPPFLAGS) \$(LDFLAGS) \$^ -o \$@ \$(LIBS) # source files %.cpp.o: %.cpp \$(CXX) \$(CXXFLAGS) \$(CPPFLAGS) -c \$^ -o \$@ %.cc.o: %.cc \$(CXX) \$(CXXFLAGS) \$(CPPFLAGS) -c \$^ -o \$@ %.C.o: %.C \$(CXX) \$(CXXFLAGS) \$(CPPFLAGS) -c \$^ -o \$@ clean: \$(RM) \$(BIN) \$(OBJS) EOF # END create makefile # create main.cc cat <<EOF >main.cc #include <iostream> int main(int argc, char **argv) { std::cout << "Hello World!" << std::endl; return 0; } EOF # END create main.cc echo "$ARG_NAME created." exit 0
大家也参与讨论一下,是不是你也在Linux下工作的时候有一些突发奇想的需求呢?围绕“如果有一个脚本可以XXX就好了。”
相关文章推荐
- Linux 下 Makefile 的 automake 生成举例 "hello world"
- "Hello World " —— 深入理解程序从编译到执行
- 2.第一个程序: "Hello, World"
- 第一个Android程序"Hello,World"
- DAY3|编个"hello world"的C程序先
- 编写程序将"hello-NOworld"变成"hello-world"
- 在Java程序中调用C函数--打印"HelloWorld"
- 初学Android,"Hello World" 第一个Android程序(一)
- 1.第一个程序: "Hello, World"
- 编译"hello world"驱动后都生成了什么
- 在Java程序中调用C函数--打印"HelloWorld"
- 1.3创建一个“HelloWorld"程序
- 结合"hello world"探讨gcc编译程序的过程
- hello world"你知多少------300种编程语言中的"hello world"程序汇
- "Hello World " —— 深入理解程序从编译到运行
- Anjuta- c++ "hello world"
- 结合"hello world"探讨gcc编译程序的过程
- 生成C++版本"Hello World"的程序
- "hello,world!"win32汇编小程序
- JNI生成C++头文件,提示错误“找不到‘com.mps.test.HelloWorld'的类文件”