BASH指令碼(ok2makefile):產生帶有makefile的C++ “Hello world”程式

來源:互聯網
上載者:User

這個指令碼也是閑著沒事兒準備以後用的,應用情境:“在Linux下開發C++項目的時候,有時候需要臨時建立一個簡單的C++工程來嘗試一些用法,但是全新編寫一個帶有makefile的hello world還是需要幾分鐘時間的,也是個反覆的活兒,要是有個命令能夠一下子產生一個目錄,裡邊含有main.cc和makefile就好了。”

如果你也會經常遇到這種情境,到可以試試ok2makefile.sh指令碼,很爽的哦!

建議用法:

Step 1: 拷貝這個ok2makefile.sh指令碼到目錄"~/bin"。
Step 2: 建立一個命令以備後用,當然得放在"~/.bashrc"中。
Step 3: 使用這個命令建立一個簡易C++工程。

全部操作如下:

xiwang@ubuntu:~/Dev/ok2makefile$ mkdir -p ~/binxiwang@ubuntu:~/Dev/ok2makefile$ cp ok2makefile.sh ~/binxiwang@ubuntu:~/Dev/ok2makefile$ echo 'alias ok2makefile="~/bin/ok2makefile.sh"' >>~/.bashrcxiwang@ubuntu:~/Dev/ok2makefile$ . ~/.bashrcxiwang@ubuntu:~/Dev/ok2makefile$ ok2makefile -n mydemomydemo created.# 嘗試使用xiwang@ubuntu:~/Dev$ ok2makefile -n mydemomydemo created.xiwang@ubuntu:~/Dev$ cd mydemo/xiwang@ubuntu:~/Dev/mydemo$ lsmain.cc  makefilexiwang@ubuntu:~/Dev/mydemo$ makeg++ -Wall -I. -D_DEBUG -c main.cc -o main.cc.og++ -D_DEBUG -L. main.cc.o -o mydemo -lpthreadxiwang@ubuntu:~/Dev/mydemo$ ./mydemoHello 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=$PWDwhile [ $# -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    ;;  esacdone# $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 $NAMEmkdir -p $ARG_NAMEcd $ARG_NAMEtouch makefiletouch main.cc# create makefilecat <<EOF >makefile# Makefile, 2012-06-23 T1110# TODO# ----------------------------------NAME        = $(echo $ARG_NAME | tr '[:upper:]' '[:lower:]')VERSION     = 1.0.0RELEASE     = 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 ----------------------------------# FoldersSRC_DIR     = .# FlagsCXXFLAGS    = -WallCXXFLAGS   += -I\$(SRC_DIR)CPPFLAGS    = -D_DEBUGLDFLAGS     = -L\$(SRC_DIR)LIBS        = -lpthread# END ----------------------------------.PHONY: all cleanall: \$(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.cccat <<EOF >main.cc#include <iostream>int main(int argc, char **argv) {  std::cout << "Hello World!" << std::endl;  return 0;}EOF# END create main.ccecho "$ARG_NAME created."exit 0

大家也參與討論一下,是不是你也在Linux下工作的時候有一些突發奇想的需求呢?圍繞“如果有一個指令碼可以XXX就好了。”

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.