Project-generating script

From Asibot & HOAP3 & TEO Wiki
Jump to navigation Jump to search

REPLACED by [1]

---

  1. !/bin/sh
  1. myproy.sh: A simple shell script for generating Module Standard v0.3 project module base

KEPT_DIR=$PWD echo Project name? read PROJECT_NAME echo Project description? read PROJECT_DESCRIPTION echo Maintainer? read PROJECT_MAINTAINER echo Installation directory "["${KEPT_DIR}"]"? read INSTALL_DIR if [ -z "$INSTALL_DIR" ]; then INSTALL_DIR=$KEPT_DIR fi echo Creating folder structure for project \"$PROJECT_NAME\" in \"$INSTALL_DIR\"... cd $INSTALL_DIR mkdir $PROJECT_NAME cd $PROJECT_NAME mkdir doc out src mkdir out/share

  1. --- BEGIN: Creating INSTALL ---

echo "${PROJECT_NAME} - ${PROJECT_DESCRIPTION}

Installation from CMake (Multiplatform)


Navigate to the project. An out-of-source build is recommended however not mandatory. To do this, create and enter a 'build' directory. 'cmake ..' should create a 'Makefile' or '.sln' there. A 'make' or 'build' should make output '${PROJECT_NAME}' appear in ./out/ correspondent directory." > INSTALL

  1. --- END: Creating INSTALL ---


  1. --- BEGIN: Creating AUTHORS ---

echo "${PROJECT_NAME} - ${PROJECT_DESCRIPTION}

Authors


Main maintainer is ${PROJECT_MAINTAINER}." > AUTHORS

  1. --- END: Creating AUTHORS ---


  1. --- BEGIN: Creating src/main.cpp ---

cd src echo " // ${PROJECT_NAME}.cpp : v0.3 : Defines the entry point for the application. //

  1. include <stdio.h>

int main(int argc, char *argv[]) {

 return 0;

} " > ${PROJECT_NAME}.cpp cd ..

  1. --- END: Creating src/main.cpp ---
  1. --- BEGIN: Creating src/main.h ---

cd src echo "// Copyright (C) 2010 Juan G Victores <jcgvicto at ing dot uc3m dot es>

// Version: 0.3 // Author: Juan G Victores <jcgvicto at ing dot uc3m dot es> // Maintainer: Juan G Victores <jcgvicto at ing dot uc3m dot es> // URL: n/a

// This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version.

// This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details.

// You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA

/**

* \mainpage ${PROJECT_NAME}
*
* This is the documentation of the ${PROJECT_NAME} module - ${PROJECT_DESCRIPTION}
Other existing driver modules are:
*
*/" > ${PROJECT_NAME}.h

cd ..

  1. --- END: Creating src/main.h ---


  1. --- BEGIN: Creating mk/CMakeLists.txt ---

echo "# Generated by \"mkproy.sh\" v0.3 CMAKE_MINIMUM_REQUIRED (VERSION 2.6) SET(KEYWORD $PROJECT_NAME)

  1. Start a project

PROJECT(\${KEYWORD})

  1. Find YARP. Point the YARP_DIR environment variable at your build.
  2. FIND_PACKAGE(YARP)
  1. Define system type

IF(\${CMAKE_SYSTEM_NAME} MATCHES \"Linux\")

       #ADD_DEFINITIONS(-DSYSTEMTYPE_LINUX)

# Set system folder name set(SYSTEM_FOLDER_NAME linux-x86) ELSEIF(\${CMAKE_SYSTEM_NAME} MATCHES \"Windows\") #ADD_DEFINITIONS(-DSYSTEMTYPE_WINDOWS) # Set system folder name set(SYSTEM_FOLDER_NAME win32) ENDIF(\${CMAKE_SYSTEM_NAME} MATCHES \"Linux\")

  1. Define standard paths.

set(MY_OUT_PATH \${CMAKE_CURRENT_SOURCE_DIR}/out/\${SYSTEM_FOLDER_NAME}) set(MY_SRC_PATH \${CMAKE_CURRENT_SOURCE_DIR}/src)

  1. Search for source code.

FILE(GLOB folder_source \${MY_SRC_PATH}/*.cpp) FILE(GLOB folder_header \${MY_SRC_PATH}/*.h) SOURCE_GROUP(\"Source Files\" FILES \${folder_source}) SOURCE_GROUP(\"Header Files\" FILES \${folder_header})

  1. Automatically add include directories if needed.

FOREACH(header_file \${folder_header})

 GET_FILENAME_COMPONENT(p \${header_file} PATH)
 INCLUDE_DIRECTORIES(\${p})

ENDFOREACH(header_file \${folder_header})

  1. Set location for binary output

set(EXECUTABLE_OUTPUT_PATH \${MY_OUT_PATH})

  1. Set up our main executable.

IF (folder_source)

 ADD_EXECUTABLE(\${KEYWORD} \${folder_source} \${folder_header})

ELSE (folder_source)

 MESSAGE(FATAL_ERROR \"No source code files found. Please add something\")

ENDIF (folder_source)

  1. Link executable to external libraries
  2. target_link_libraries (\${KEYWORD} YARP_OS) # YARP_OSd for debug on win32

IF(\${CMAKE_SYSTEM_NAME} MATCHES \"Linux\")

#ADD_DEFINITIONS(-DSYSTEMTYPE_LINUX)

ELSEIF(\${CMAKE_SYSTEM_NAME} MATCHES \"Windows\")

#target_link_libraries (\${KEYWORD} ACE) # ACEd for debug on win32
#target_link_libraries (\${KEYWORD} winmm)

ENDIF(\${CMAKE_SYSTEM_NAME} MATCHES \"Linux\") " > CMakeLists.txt

  1. --- END: Creating CMakeLists.txt ---
  1. --- BEGIN: Creating doc/Doxyfile ---

cd doc echo "

  1. Doxyfile 1.4.6
  1. ---------------------------------------------------------------------------
  2. Project related configuration options
  3. ---------------------------------------------------------------------------

PROJECT_NAME = ${PROJECT_NAME} PROJECT_NUMBER = 0.3 OUTPUT_DIRECTORY = . CREATE_SUBDIRS = NO OUTPUT_LANGUAGE = English USE_WINDOWS_ENCODING = NO BRIEF_MEMBER_DESC = YES REPEAT_BRIEF = YES ABBREVIATE_BRIEF = \"The \$name class\" \

                        \"The \$name widget\" \
                        \"The \$name file\" \
                        is \
                        provides \
                        specifies \
                        contains \
                        represents \
                        a \
                        an \
                        the

ALWAYS_DETAILED_SEC = NO INLINE_INHERITED_MEMB = YES FULL_PATH_NAMES = YES STRIP_FROM_PATH = STRIP_FROM_INC_PATH = SHORT_NAMES = NO JAVADOC_AUTOBRIEF = YES MULTILINE_CPP_IS_BRIEF = NO DETAILS_AT_TOP = NO INHERIT_DOCS = YES SEPARATE_MEMBER_PAGES = NO TAB_SIZE = 8 ALIASES = OPTIMIZE_OUTPUT_FOR_C = NO OPTIMIZE_OUTPUT_JAVA = NO BUILTIN_STL_SUPPORT = YES DISTRIBUTE_GROUP_DOC = NO SUBGROUPING = YES

  1. ---------------------------------------------------------------------------
  2. Build related configuration options
  3. ---------------------------------------------------------------------------

EXTRACT_ALL = YES EXTRACT_PRIVATE = YES EXTRACT_STATIC = YES EXTRACT_LOCAL_CLASSES = YES EXTRACT_LOCAL_METHODS = NO HIDE_UNDOC_MEMBERS = NO HIDE_UNDOC_CLASSES = NO HIDE_FRIEND_COMPOUNDS = NO HIDE_IN_BODY_DOCS = NO INTERNAL_DOCS = NO CASE_SENSE_NAMES = YES HIDE_SCOPE_NAMES = NO SHOW_INCLUDE_FILES = YES INLINE_INFO = YES SORT_MEMBER_DOCS = YES SORT_BRIEF_DOCS = NO SORT_BY_SCOPE_NAME = NO GENERATE_TODOLIST = YES GENERATE_TESTLIST = YES GENERATE_BUGLIST = YES GENERATE_DEPRECATEDLIST= YES ENABLED_SECTIONS = MAX_INITIALIZER_LINES = 30 SHOW_USED_FILES = YES SHOW_DIRECTORIES = NO FILE_VERSION_FILTER =

  1. ---------------------------------------------------------------------------
  2. configuration options related to warning and progress messages
  3. ---------------------------------------------------------------------------

QUIET = NO WARNINGS = YES WARN_IF_UNDOCUMENTED = YES WARN_IF_DOC_ERROR = YES WARN_NO_PARAMDOC = NO WARN_FORMAT = \"\$file:\$line: \$text\" WARN_LOGFILE =

  1. ---------------------------------------------------------------------------
  2. configuration options related to the input files
  3. ---------------------------------------------------------------------------

INPUT = ../src FILE_PATTERNS = *.cpp \

                        *.cxx \
                        *.h \
                        *.hpp \
                        *.inl 

RECURSIVE = NO EXCLUDE =

EXCLUDE_SYMLINKS = NO EXCLUDE_PATTERNS = *.svn* CMake* EXAMPLE_PATH = EXAMPLE_PATTERNS = * EXAMPLE_RECURSIVE = NO IMAGE_PATH = INPUT_FILTER = FILTER_PATTERNS = FILTER_SOURCE_FILES = NO

  1. ---------------------------------------------------------------------------
  2. configuration options related to source browsing
  3. ---------------------------------------------------------------------------

SOURCE_BROWSER = NO INLINE_SOURCES = NO STRIP_CODE_COMMENTS = YES REFERENCED_BY_RELATION = YES REFERENCES_RELATION = YES USE_HTAGS = NO VERBATIM_HEADERS = YES

  1. ---------------------------------------------------------------------------
  2. configuration options related to the alphabetical class index
  3. ---------------------------------------------------------------------------

ALPHABETICAL_INDEX = YES COLS_IN_ALPHA_INDEX = 4 IGNORE_PREFIX =

  1. ---------------------------------------------------------------------------
  2. configuration options related to the HTML output
  3. ---------------------------------------------------------------------------

GENERATE_HTML = YES HTML_OUTPUT = html HTML_FILE_EXTENSION = .html HTML_HEADER = HTML_FOOTER = HTML_STYLESHEET = HTML_ALIGN_MEMBERS = YES GENERATE_HTMLHELP = NO CHM_FILE = HHC_LOCATION = GENERATE_CHI = NO BINARY_TOC = NO TOC_EXPAND = NO DISABLE_INDEX = NO ENUM_VALUES_PER_LINE = 4 GENERATE_TREEVIEW = NO TREEVIEW_WIDTH = 250

  1. ---------------------------------------------------------------------------
  2. configuration options related to the LaTeX output
  3. ---------------------------------------------------------------------------

GENERATE_LATEX = NO LATEX_OUTPUT = latex LATEX_CMD_NAME = latex MAKEINDEX_CMD_NAME = makeindex COMPACT_LATEX = NO PAPER_TYPE = a4wide EXTRA_PACKAGES = LATEX_HEADER = PDF_HYPERLINKS = NO USE_PDFLATEX = NO LATEX_BATCHMODE = NO LATEX_HIDE_INDICES = NO

  1. ---------------------------------------------------------------------------
  2. configuration options related to the RTF output
  3. ---------------------------------------------------------------------------

GENERATE_RTF = NO RTF_OUTPUT = rtf COMPACT_RTF = NO RTF_HYPERLINKS = NO RTF_STYLESHEET_FILE = RTF_EXTENSIONS_FILE =

  1. ---------------------------------------------------------------------------
  2. configuration options related to the man page output
  3. ---------------------------------------------------------------------------

GENERATE_MAN = NO MAN_OUTPUT = man MAN_EXTENSION = .3 MAN_LINKS = NO

  1. ---------------------------------------------------------------------------
  2. configuration options related to the XML output
  3. ---------------------------------------------------------------------------

GENERATE_XML = NO XML_OUTPUT = xml XML_SCHEMA = XML_DTD = XML_PROGRAMLISTING = YES

  1. ---------------------------------------------------------------------------
  2. configuration options for the AutoGen Definitions output
  3. ---------------------------------------------------------------------------

GENERATE_AUTOGEN_DEF = NO

  1. ---------------------------------------------------------------------------
  2. configuration options related to the Perl module output
  3. ---------------------------------------------------------------------------

GENERATE_PERLMOD = NO PERLMOD_LATEX = NO PERLMOD_PRETTY = YES PERLMOD_MAKEVAR_PREFIX =

  1. ---------------------------------------------------------------------------
  2. Configuration options related to the preprocessor
  3. ---------------------------------------------------------------------------

ENABLE_PREPROCESSING = YES MACRO_EXPANSION = NO EXPAND_ONLY_PREDEF = NO SEARCH_INCLUDES = YES INCLUDE_PATH = INCLUDE_FILE_PATTERNS = PREDEFINED = EXPAND_AS_DEFINED = SKIP_FUNCTION_MACROS = YES

  1. ---------------------------------------------------------------------------
  2. Configuration options related to the dot tool
  3. ---------------------------------------------------------------------------

CLASS_DIAGRAMS = NO HIDE_UNDOC_RELATIONS = YES HAVE_DOT = YES CLASS_GRAPH = YES COLLABORATION_GRAPH = YES GROUP_GRAPHS = YES UML_LOOK = NO TEMPLATE_RELATIONS = YES INCLUDE_GRAPH = YES INCLUDED_BY_GRAPH = YES CALL_GRAPH = NO GRAPHICAL_HIERARCHY = YES DIRECTORY_GRAPH = YES DOT_IMAGE_FORMAT = png DOT_PATH = DOTFILE_DIRS = MAX_DOT_GRAPH_WIDTH = 1024 MAX_DOT_GRAPH_HEIGHT = 1024 MAX_DOT_GRAPH_DEPTH = 1000 DOT_TRANSPARENT = NO DOT_MULTI_TARGETS = NO GENERATE_LEGEND = YES DOT_CLEANUP = YES

  1. ---------------------------------------------------------------------------
  2. Configuration::additions related to the search engine
  3. ---------------------------------------------------------------------------

SEARCHENGINE = N " > Doxyfile cd ..

  1. --- END: Creating doc/Doxyfile ---
  1. To be left as Script last line:

tree $INSTALL_DIR/$PROJECT_NAME