Difference between revisions of "Project-generating script"
Jgvictores (talk | contribs) (Created page with '#!/bin/sh # myproy.sh: A simple shell script for generating AHR project module base, v0.2 KEPT_DIR=$PWD echo Project name? read PROJECT_NAME echo Project description? read PROJ…') |
Jgvictores (talk | contribs) |
||
Line 1: | Line 1: | ||
#!/bin/sh | #!/bin/sh | ||
− | # myproy.sh: A simple shell script for generating AHR project module base, v0. | + | # myproy.sh: A simple shell script for generating AHR project module base, v0.3 |
KEPT_DIR=$PWD | KEPT_DIR=$PWD | ||
Line 19: | Line 19: | ||
mkdir $PROJECT_NAME | mkdir $PROJECT_NAME | ||
cd $PROJECT_NAME | cd $PROJECT_NAME | ||
− | mkdir doc | + | mkdir doc out src |
− | mkdir | + | mkdir out/share |
# --- BEGIN: Creating INSTALL --- | # --- BEGIN: Creating INSTALL --- | ||
Line 28: | Line 28: | ||
--------------------------------------- | --------------------------------------- | ||
− | Navigate to . | + | 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 |
− | |||
# --- END: Creating INSTALL --- | # --- END: Creating INSTALL --- | ||
Line 46: | Line 45: | ||
cd src | cd src | ||
echo " | echo " | ||
− | // ${PROJECT_NAME}.cpp : Defines the entry point for the application. | + | // ${PROJECT_NAME}.cpp : v0.3 : Defines the entry point for the application. |
// | // | ||
Line 58: | Line 57: | ||
cd .. | cd .. | ||
# --- END: Creating src/main.cpp --- | # --- END: Creating src/main.cpp --- | ||
+ | |||
+ | # --- 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 .. | ||
+ | # --- END: Creating src/main.h --- | ||
# --- BEGIN: Creating mk/CMakeLists.txt --- | # --- BEGIN: Creating mk/CMakeLists.txt --- | ||
− | + | echo "# Generated by \"mkproy.sh\" v0.3 | |
− | echo "# Generated by \"mkproy.sh\" | ||
CMAKE_MINIMUM_REQUIRED (VERSION 2.6) | CMAKE_MINIMUM_REQUIRED (VERSION 2.6) | ||
SET(KEYWORD $PROJECT_NAME) | SET(KEYWORD $PROJECT_NAME) | ||
Line 84: | Line 117: | ||
# Define standard paths. | # Define standard paths. | ||
− | set( | + | set(MY_OUT_PATH \${CMAKE_CURRENT_SOURCE_DIR}/out/\${SYSTEM_FOLDER_NAME}) |
− | + | set(MY_SRC_PATH \${CMAKE_CURRENT_SOURCE_DIR}/src) | |
− | |||
− | set( | ||
− | |||
− | |||
− | |||
# Search for source code. | # Search for source code. | ||
Line 103: | Line 131: | ||
INCLUDE_DIRECTORIES(\${p}) | INCLUDE_DIRECTORIES(\${p}) | ||
ENDFOREACH(header_file \${folder_header}) | ENDFOREACH(header_file \${folder_header}) | ||
− | |||
− | |||
− | |||
− | |||
− | |||
# Set location for binary output | # Set location for binary output | ||
Line 120: | Line 143: | ||
# Link executable to external libraries | # Link executable to external libraries | ||
− | target_link_libraries (\${KEYWORD} YARP_OS) # YARP_OSd for debug on win32 | + | #target_link_libraries (\${KEYWORD} YARP_OS) # YARP_OSd for debug on win32 |
− | |||
IF(\${CMAKE_SYSTEM_NAME} MATCHES \"Linux\") | IF(\${CMAKE_SYSTEM_NAME} MATCHES \"Linux\") | ||
− | + | #ADD_DEFINITIONS(-DSYSTEMTYPE_LINUX) | |
ELSEIF(\${CMAKE_SYSTEM_NAME} MATCHES \"Windows\") | 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\") | ENDIF(\${CMAKE_SYSTEM_NAME} MATCHES \"Linux\") | ||
" > CMakeLists.txt | " > CMakeLists.txt | ||
− | + | # --- END: Creating CMakeLists.txt --- | |
− | # --- END: Creating | ||
# --- BEGIN: Creating doc/Doxyfile --- | # --- BEGIN: Creating doc/Doxyfile --- | ||
Line 141: | Line 162: | ||
#--------------------------------------------------------------------------- | #--------------------------------------------------------------------------- | ||
PROJECT_NAME = ${PROJECT_NAME} | PROJECT_NAME = ${PROJECT_NAME} | ||
− | PROJECT_NUMBER = 0. | + | PROJECT_NUMBER = 0.3 |
OUTPUT_DIRECTORY = . | OUTPUT_DIRECTORY = . | ||
CREATE_SUBDIRS = NO | CREATE_SUBDIRS = NO |
Revision as of 17:52, 1 June 2010
- !/bin/sh
- myproy.sh: A simple shell script for generating AHR project module base, v0.3
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
- --- 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
- --- END: Creating INSTALL ---
- --- BEGIN: Creating AUTHORS ---
echo "${PROJECT_NAME} - ${PROJECT_DESCRIPTION}
Authors
Main maintainer is ${PROJECT_MAINTAINER}." > AUTHORS
- --- END: Creating AUTHORS ---
- --- BEGIN: Creating src/main.cpp ---
cd src echo " // ${PROJECT_NAME}.cpp : v0.3 : Defines the entry point for the application. //
- include <stdio.h>
int main(int argc, char *argv[]) {
return 0;
} " > ${PROJECT_NAME}.cpp cd ..
- --- END: Creating src/main.cpp ---
- --- 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 ..
- --- END: Creating src/main.h ---
- --- BEGIN: Creating mk/CMakeLists.txt ---
echo "# Generated by \"mkproy.sh\" v0.3 CMAKE_MINIMUM_REQUIRED (VERSION 2.6) SET(KEYWORD $PROJECT_NAME)
- Start a project
PROJECT(\${KEYWORD})
- Find YARP. Point the YARP_DIR environment variable at your build.
- FIND_PACKAGE(YARP)
- 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\")
- Define standard paths.
set(MY_OUT_PATH \${CMAKE_CURRENT_SOURCE_DIR}/out/\${SYSTEM_FOLDER_NAME}) set(MY_SRC_PATH \${CMAKE_CURRENT_SOURCE_DIR}/src)
- 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})
- 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})
- Set location for binary output
set(EXECUTABLE_OUTPUT_PATH \${MY_OUT_PATH})
- 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)
- Link executable to external libraries
- 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
- --- END: Creating CMakeLists.txt ---
- --- BEGIN: Creating doc/Doxyfile ---
cd doc echo "
- Doxyfile 1.4.6
- ---------------------------------------------------------------------------
- Project related configuration options
- ---------------------------------------------------------------------------
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
- ---------------------------------------------------------------------------
- Build related configuration options
- ---------------------------------------------------------------------------
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 =
- ---------------------------------------------------------------------------
- configuration options related to warning and progress messages
- ---------------------------------------------------------------------------
QUIET = NO WARNINGS = YES WARN_IF_UNDOCUMENTED = YES WARN_IF_DOC_ERROR = YES WARN_NO_PARAMDOC = NO WARN_FORMAT = \"\$file:\$line: \$text\" WARN_LOGFILE =
- ---------------------------------------------------------------------------
- configuration options related to the input files
- ---------------------------------------------------------------------------
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
- ---------------------------------------------------------------------------
- configuration options related to source browsing
- ---------------------------------------------------------------------------
SOURCE_BROWSER = NO INLINE_SOURCES = NO STRIP_CODE_COMMENTS = YES REFERENCED_BY_RELATION = YES REFERENCES_RELATION = YES USE_HTAGS = NO VERBATIM_HEADERS = YES
- ---------------------------------------------------------------------------
- configuration options related to the alphabetical class index
- ---------------------------------------------------------------------------
ALPHABETICAL_INDEX = YES COLS_IN_ALPHA_INDEX = 4 IGNORE_PREFIX =
- ---------------------------------------------------------------------------
- configuration options related to the HTML output
- ---------------------------------------------------------------------------
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
- ---------------------------------------------------------------------------
- configuration options related to the LaTeX output
- ---------------------------------------------------------------------------
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
- ---------------------------------------------------------------------------
- configuration options related to the RTF output
- ---------------------------------------------------------------------------
GENERATE_RTF = NO RTF_OUTPUT = rtf COMPACT_RTF = NO RTF_HYPERLINKS = NO RTF_STYLESHEET_FILE = RTF_EXTENSIONS_FILE =
- ---------------------------------------------------------------------------
- configuration options related to the man page output
- ---------------------------------------------------------------------------
GENERATE_MAN = NO MAN_OUTPUT = man MAN_EXTENSION = .3 MAN_LINKS = NO
- ---------------------------------------------------------------------------
- configuration options related to the XML output
- ---------------------------------------------------------------------------
GENERATE_XML = NO XML_OUTPUT = xml XML_SCHEMA = XML_DTD = XML_PROGRAMLISTING = YES
- ---------------------------------------------------------------------------
- configuration options for the AutoGen Definitions output
- ---------------------------------------------------------------------------
GENERATE_AUTOGEN_DEF = NO
- ---------------------------------------------------------------------------
- configuration options related to the Perl module output
- ---------------------------------------------------------------------------
GENERATE_PERLMOD = NO PERLMOD_LATEX = NO PERLMOD_PRETTY = YES PERLMOD_MAKEVAR_PREFIX =
- ---------------------------------------------------------------------------
- Configuration options related to the preprocessor
- ---------------------------------------------------------------------------
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
- ---------------------------------------------------------------------------
- Configuration options related to the dot tool
- ---------------------------------------------------------------------------
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
- ---------------------------------------------------------------------------
- Configuration::additions related to the search engine
- ---------------------------------------------------------------------------
SEARCHENGINE = N " > Doxyfile cd ..
- --- END: Creating doc/Doxyfile ---
- To be left as Script last line:
tree $INSTALL_DIR/$PROJECT_NAME