Selaa lähdekoodia

* Improved project structure

* Added project template for interface libraries
master
bergmann 6 vuotta sitten
vanhempi
commit
e53aa14820
20 muutettua tiedostoa jossa 326 lisäystä ja 65 poistoa
  1. +2
    -2
      projects/helloworld/CMakeLists.txt
  2. +1
    -1
      projects/helloworld/cmake/helloworld-const.cmake
  3. +0
    -5
      projects/helloworld/test/CMakeLists.txt
  4. +7
    -2
      projects/libhelloworld/CMakeLists.txt
  5. +3
    -3
      projects/libhelloworld/cmake/libhelloworld-const.cmake
  6. +3
    -0
      projects/libhelloworld/cmake/libhelloworld-options.cmake
  7. +4
    -0
      projects/libhelloworld/src/CMakeLists.txt
  8. +0
    -5
      projects/libhelloworld/test/CMakeLists.txt
  9. +63
    -0
      projects/libinterface/CMakeLists.txt
  10. +9
    -0
      projects/libinterface/cmake/libinterface-config.cmake
  11. +28
    -0
      projects/libinterface/cmake/libinterface-const.cmake
  12. +11
    -0
      projects/libinterface/cmake/libinterface-options.cmake
  13. +26
    -0
      projects/libinterface/cmake/libinterface-var.cmake
  14. +4
    -0
      projects/libinterface/include/libinterface.h
  15. +15
    -0
      projects/libinterface/include/libinterface/dummy.h
  16. +11
    -0
      projects/libinterface/include/libinterface/dummy.inl
  17. +30
    -0
      projects/libinterface/src/CMakeLists.txt
  18. +52
    -0
      projects/libinterface/test/CMakeLists.txt
  19. +10
    -0
      projects/libinterface/test/libinterface/libinterface_tests.cpp
  20. +47
    -47
      tool

+ 2
- 2
projects/helloworld/CMakeLists.txt Näytä tiedosto

@@ -20,14 +20,14 @@ EndIf ( )

# Project #########################################################################################

Include ( CTest )
Include ( GNUInstallDirs )
Include ( ${CMAKE_CURRENT_SOURCE_DIR}/cmake/helloworld-options.cmake )
Include ( ${CMAKE_CURRENT_SOURCE_DIR}/cmake/helloworld-const.cmake )
Include ( ${CMAKE_CURRENT_SOURCE_DIR}/cmake/helloworld-var.cmake )
Project ( ${HELLOWORLD_PROJECT_NAME}
DESCRIPTION "${HELLOWORLD_PROJECT_DESCRIPTION}"
VERSION "${HELLOWORLD_VERSION}" )
Include ( CTest )
Include ( GNUInstallDirs )

# Subdirectories
Add_SubDirectory ( ${CMAKE_CURRENT_SOURCE_DIR}/src )


+ 1
- 1
projects/helloworld/cmake/helloworld-const.cmake Näytä tiedosto

@@ -17,7 +17,7 @@ Set ( HELLOWORLD_PROJECT_DESCRIPTION "A simple he
Include ( ${CMAKE_CURRENT_LIST_DIR}/helloworld-var.cmake )

# Install directories
Set ( HELLOWORLD_INSTALL_DIR_BIN "bin" )
Set ( HELLOWORLD_INSTALL_DIR_BIN "${CMAKE_INSTALL_BINDIR}" )

# C Standard
Set ( CMAKE_C_STANDARD 11 )


+ 0
- 5
projects/helloworld/test/CMakeLists.txt Näytä tiedosto

@@ -43,11 +43,6 @@ ForEach ( FILE IN LISTS HELLOWORLD_TEST_SOURCE_FILES )
Pedantic_Apply_Flags_Target ( ${TEST_NAME} ALL )
EndIf ( )

# optimization
If ( HAS_COTIRE )
Cotire ( ${TEST_NAME} )
EndIf ( )

# test
If ( HAS_CMAKE_TESTS )
Add_CMake_Test ( NAME ${TEST_NAME} TARGET ${TEST_NAME} )


+ 7
- 2
projects/libhelloworld/CMakeLists.txt Näytä tiedosto

@@ -20,20 +20,25 @@ EndIf ( )

# Project #########################################################################################

Include ( CTest )
Include ( GNUInstallDirs )
Include ( ${CMAKE_CURRENT_SOURCE_DIR}/cmake/libhelloworld-options.cmake )
Include ( ${CMAKE_CURRENT_SOURCE_DIR}/cmake/libhelloworld-const.cmake )
Include ( ${CMAKE_CURRENT_SOURCE_DIR}/cmake/libhelloworld-var.cmake )
Project ( ${LIBHELLOWORLD_PROJECT_NAME}
DESCRIPTION "${LIBHELLOWORLD_PROJECT_DESCRIPTION}"
VERSION "${LIBHELLOWORLD_VERSION}" )
Include ( CTest )
Include ( GNUInstallDirs )

# Subdirectories
Add_SubDirectory ( ${CMAKE_CURRENT_SOURCE_DIR}/src )
Add_SubDirectory ( ${CMAKE_CURRENT_SOURCE_DIR}/test )

# Install
If ( NOT LIBHELLOWORLD_HAS_EXPORT
OR NOT LIBHELLOWORLD_INSTALL_PACKAGE )
Return ( )
EndIf ( )

Include ( CMakePackageConfigHelpers )
Write_Basic_Package_Version_File ( "${CMAKE_CURRENT_BINARY_DIR}/cmake/libhelloworld-config-version.cmake"
VERSION ${LIBHELLOWORLD_VERSION}


+ 3
- 3
projects/libhelloworld/cmake/libhelloworld-const.cmake Näytä tiedosto

@@ -17,9 +17,9 @@ Set ( LIBHELLOWORLD_PROJECT_DESCRIPTION "A simpl
Include ( ${CMAKE_CURRENT_LIST_DIR}/libhelloworld-var.cmake )

# Install directories
Set ( LIBHELLOWORLD_INSTALL_DIR_INCLUDE "include/${LIBHELLOWORLD_NAME}" )
Set ( LIBHELLOWORLD_INSTALL_DIR_LIB "lib" )
Set ( LIBHELLOWORLD_INSTALL_DIR_SHARE "share/${LIBHELLOWORLD_NAME}" )
Set ( LIBHELLOWORLD_INSTALL_DIR_INCLUDE "${CMAKE_INSTALL_INCLUDEDIR}/${LIBHELLOWORLD_NAME}" )
Set ( LIBHELLOWORLD_INSTALL_DIR_LIB "${CMAKE_INSTALL_LIBDIR}" )
Set ( LIBHELLOWORLD_INSTALL_DIR_SHARE "${CMAKE_INSTALL_DATAROOTDIR}/${LIBHELLOWORLD_NAME}" )

# C Standard
Set ( CMAKE_C_STANDARD 11 )


+ 3
- 0
projects/libhelloworld/cmake/libhelloworld-options.cmake Näytä tiedosto

@@ -12,6 +12,9 @@ Option ( LIBHELLOWORLD_INSTALL_SHARED
Option ( LIBHELLOWORLD_INSTALL_DEBUG
"Install the stripped debug informations of libhelloworld."
OFF )
Option ( LIBHELLOWORLD_INSTALL_PACKAGE
"Install the cmake package of libhelloworld."
ON )
Option ( LIBHELLOWORLD_NO_STRIP
"Do not strip debug symbols from binary."
OFF )


+ 4
- 0
projects/libhelloworld/src/CMakeLists.txt Näytä tiedosto

@@ -64,6 +64,8 @@ EndIf ( )

# Install #########################################################################################

Set ( LIBHELLOWORLD_HAS_EXPORT False PARENT_SCOPE )

# Header
If ( LIBHELLOWORLD_INSTALL_HEADER )
Install ( FILES ${LIBHELLOWORLD_INCLUDE_DIR}/libhelloworld.h
@@ -74,6 +76,7 @@ EndIf ( )

# Static
If ( LIBHELLOWORLD_INSTALL_STATIC )
Set ( LIBHELLOWORLD_HAS_EXPORT True PARENT_SCOPE )
Install ( TARGETS libhelloworld-static
EXPORT libhelloworld
DESTINATION ${LIBHELLOWORLD_INSTALL_DIR_LIB} )
@@ -81,6 +84,7 @@ EndIf ( )

# Shared
If ( LIBHELLOWORLD_INSTALL_SHARED )
Set ( LIBHELLOWORLD_HAS_EXPORT True PARENT_SCOPE )
Install ( TARGETS libhelloworld-shared
EXPORT libhelloworld
DESTINATION ${LIBHELLOWORLD_INSTALL_DIR_LIB} )


+ 0
- 5
projects/libhelloworld/test/CMakeLists.txt Näytä tiedosto

@@ -43,11 +43,6 @@ ForEach ( FILE IN LISTS LIBHELLOWORLD_TEST_SOURCE_FILES )
Pedantic_Apply_Flags_Target ( ${TEST_NAME} ALL )
EndIf ( )

# optimization
If ( HAS_COTIRE )
Cotire ( ${TEST_NAME} )
EndIf ( )

# test
If ( HAS_CMAKE_TESTS )
Add_CMake_Test ( NAME ${TEST_NAME} TARGET ${TEST_NAME} )


+ 63
- 0
projects/libinterface/CMakeLists.txt Näytä tiedosto

@@ -0,0 +1,63 @@
# Initialize CMake ################################################################################

CMake_Minimum_Required ( VERSION 3.12.0 FATAL_ERROR )

# Set CMAKE_BUILD_TYPE
If ( NOT CMAKE_BUILD_TYPE )
Set ( CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose the type of build!" FORCE )
EndIf ( NOT CMAKE_BUILD_TYPE )
Set_Property ( CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS Debug Release RelWithDebInfo MinSizeRel )

# Set CMAKE_MODULE_PATH
If ( EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/cmake/" )
Set ( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH}
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/" )
EndIf ( )
If ( EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/cmake/" )
Set ( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH}
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules" )
EndIf ( )

# Project #########################################################################################

Include ( CTest )
Include ( GNUInstallDirs )
Include ( ${CMAKE_CURRENT_SOURCE_DIR}/cmake/libinterface-options.cmake )
Include ( ${CMAKE_CURRENT_SOURCE_DIR}/cmake/libinterface-const.cmake )
Include ( ${CMAKE_CURRENT_SOURCE_DIR}/cmake/libinterface-var.cmake )
Project ( ${LIBINTERFACE_PROJECT_NAME}
DESCRIPTION "${LIBINTERFACE_PROJECT_DESCRIPTION}"
VERSION "${LIBINTERFACE_VERSION}" )

# Subdirectories
Add_SubDirectory ( ${CMAKE_CURRENT_SOURCE_DIR}/src )
Add_SubDirectory ( ${CMAKE_CURRENT_SOURCE_DIR}/test )

# Install
If ( NOT LIBINTERFACE_HAS_EXPORT
OR NOT LIBINTERFACE_INSTALL_PACKAGE )
Return ( )
EndIf ( )

Include ( CMakePackageConfigHelpers )
Write_Basic_Package_Version_File ( "${CMAKE_CURRENT_BINARY_DIR}/cmake/libinterface-config-version.cmake"
VERSION ${LIBINTERFACE_VERSION}
COMPATIBILITY AnyNewerVersion )
Configure_File ( "${CMAKE_CURRENT_SOURCE_DIR}/cmake/libinterface-config.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/cmake/libinterface-config.cmake"
@ONLY )

Set ( ConfigPackageLocation "${LIBINTERFACE_INSTALL_DIR_SHARE}/cmake" )
Install ( EXPORT
libinterface
NAMESPACE
libinterface::
DESTINATION
${ConfigPackageLocation} )
Install ( FILES
"${CMAKE_CURRENT_BINARY_DIR}/cmake/libinterface-config.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/cmake/libinterface-config-version.cmake"
DESTINATION
${ConfigPackageLocation}
COMPONENT
Devel )

+ 9
- 0
projects/libinterface/cmake/libinterface-config.cmake Näytä tiedosto

@@ -0,0 +1,9 @@
# libinterface-config.cmake - package configuration file

# Include ( CMakeFindDependencyMacro )
# Find_Dependency ( <dependency> )

Include ( FindPackageHandleStandardArgs )
Set ( ${CMAKE_FIND_PACKAGE_NAME}_CONFIG ${CMAKE_CURRENT_LIST_FILE} )
Find_Package_Handle_Standard_Args ( libinterface CONFIG_MODE )
Include ( "${CMAKE_CURRENT_LIST_DIR}/libinterface.cmake")

+ 28
- 0
projects/libinterface/cmake/libinterface-const.cmake Näytä tiedosto

@@ -0,0 +1,28 @@
# This file contains constant variables that are fixed to this project

# Version
Set ( LIBINTERFACE_VERSION_MAJOR 1 )
Set ( LIBINTERFACE_VERSION_MINOR 0 )
Set ( LIBINTERFACE_VERSION_PATCH 0 )
Set ( LIBINTERFACE_VERSION_BUILD 0 )
Set ( LIBINTERFACE_VERSION_HASH "" )
Set ( LIBINTERFACE_VERSION_BEHIND 0 )
Set ( LIBINTERFACE_VERSION_DIRTY 0 )

# Names
Set ( LIBINTERFACE_PROJECT_NAME "libinterface" )
Set ( LIBINTERFACE_PROJECT_DESCRIPTION "A simple interface library" )

# Include generated variables for further usage
Include ( ${CMAKE_CURRENT_LIST_DIR}/libinterface-var.cmake )

# Install directories
Set ( LIBINTERFACE_INSTALL_DIR_INCLUDE "${CMAKE_INSTALL_INCLUDEDIR}/${LIBINTERFACE_NAME}" )
Set ( LIBINTERFACE_INSTALL_DIR_LIB "${CMAKE_INSTALL_LIBDIR}" )
Set ( LIBINTERFACE_INSTALL_DIR_SHARE "${CMAKE_INSTALL_DATAROOTDIR}/${LIBINTERFACE_NAME}" )

# C Standard
Set ( CMAKE_C_STANDARD 11 )
Set ( CMAKE_CXX_STANDARD 17 )
Set ( CMAKE_C_STANDARD_REQUIRED ON )
Set ( CMAKE_CXX_STANDARD_REQUIRED ON )

+ 11
- 0
projects/libinterface/cmake/libinterface-options.cmake Näytä tiedosto

@@ -0,0 +1,11 @@
# This file contains options that can be passed to the cmake command

Option ( LIBINTERFACE_INSTALL_HEADER
"Install headers of libinterface."
ON )
Option ( LIBINTERFACE_INSTALL_PACKAGE
"Install the cmake package of libinterface."
ON )
Option ( LIBINTERFACE_USE_GIT_VERSION
"Read the git tags to get the version of libinterface"
ON )

+ 26
- 0
projects/libinterface/cmake/libinterface-var.cmake Näytä tiedosto

@@ -0,0 +1,26 @@
# This file contains generated variables that are needed for the project

# Git Version
If ( LIBINTERFACE_USE_GIT_VERSION )
Include ( git_helper OPTIONAL RESULT_VARIABLE HAS_GIT_HELPER )
If ( HAS_GIT_HELPER )
GitGetVersion ( ${CMAKE_CURRENT_LIST_DIR}/..
LIBINTERFACE_VERSION_MAJOR
LIBINTERFACE_VERSION_MINOR
LIBINTERFACE_VERSION_PATCH
LIBINTERFACE_VERSION_BUILD
LIBINTERFACE_VERSION_HASH
LIBINTERFACE_VERSION_BEHIND
LIBINTERFACE_VERSION_DIRTY )
EndIf ( )
EndIf ( )

# Strings
Set ( LIBINTERFACE_VERSION_SHORT "${LIBINTERFACE_VERSION_MAJOR}.${LIBINTERFACE_VERSION_MINOR}" )
Set ( LIBINTERFACE_VERSION "${LIBINTERFACE_VERSION_SHORT}.${LIBINTERFACE_VERSION_PATCH}.${LIBINTERFACE_VERSION_BUILD}" )
Set ( LIBINTERFACE_VERSION_COMPLETE "${LIBINTERFACE_VERSION}" )
Set ( LIBINTERFACE_NAME "${LIBINTERFACE_PROJECT_NAME}-${LIBINTERFACE_VERSION_SHORT}" )
Set ( LIBINTERFACE_OUTPUTNAME "${LIBINTERFACE_PROJECT_NAME}" )
If ( LIBINTERFACE_VERSION_BEHIND )
Set ( LIBINTERFACE_VERSION_COMPLETE "${LIBINTERFACE_VERSION_COMPLETE}+${LIBINTERFACE_VERSION_BEHIND}" )
EndIf ( )

+ 4
- 0
projects/libinterface/include/libinterface.h Näytä tiedosto

@@ -0,0 +1,4 @@
#pragma once

#include <libinterface/dummy.h>
#include <libinterface/dummy.inl>

+ 15
- 0
projects/libinterface/include/libinterface/dummy.h Näytä tiedosto

@@ -0,0 +1,15 @@
#pragma once

#include <string>

namespace libinterface
{

struct Dummy
{
static inline std::string getHelloWorld();
};

}

#include "dummy.inl"

+ 11
- 0
projects/libinterface/include/libinterface/dummy.inl Näytä tiedosto

@@ -0,0 +1,11 @@
#pragma once

#include "dummy.h"

namespace libinterface
{

std::string Dummy::getHelloWorld()
{ return "HelloWorld"; }

}

+ 30
- 0
projects/libinterface/src/CMakeLists.txt Näytä tiedosto

@@ -0,0 +1,30 @@
# Initialize ######################################################################################

Include ( cotire OPTIONAL RESULT_VARIABLE HAS_COTIRE )
Include ( pedantic OPTIONAL RESULT_VARIABLE HAS_PEDANTIC )
Include ( strip_symbols OPTIONAL RESULT_VARIABLE HAS_STRIP_SYMBOLS )

# Interface Library ###############################################################################

Set ( LIBINTERFACE_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../include )
Add_Library ( libinterface INTERFACE )
Target_Include_Directories ( libinterface
INTERFACE
$<BUILD_INTERFACE:${LIBINTERFACE_INCLUDE_DIR}>
$<INSTALL_INTERFACE:${LIBINTERFACE_INSTALL_DIR_INCLUDE}> )

# Install #########################################################################################

Set ( LIBINTERFACE_HAS_EXPORT False PARENT_SCOPE )

# Header
If ( LIBINTERFACE_INSTALL_HEADER )
Set ( LIBINTERFACE_HAS_EXPORT True PARENT_SCOPE )
Install ( FILES ${LIBINTERFACE_INCLUDE_DIR}/libinterface.h
DESTINATION ${LIBINTERFACE_INSTALL_DIR_INCLUDE} )
Install ( DIRECTORY ${LIBINTERFACE_INCLUDE_DIR}/libinterface
DESTINATION ${LIBINTERFACE_INSTALL_DIR_INCLUDE} )
Install ( TARGETS libinterface
EXPORT libinterface
DESTINATION ${LIBINTERFACE_INSTALL_DIR_INCLUDE} )
EndIf ( )

+ 52
- 0
projects/libinterface/test/CMakeLists.txt Näytä tiedosto

@@ -0,0 +1,52 @@
# Initialize ######################################################################################

Include ( cotire OPTIONAL RESULT_VARIABLE HAS_COTIRE )
Include ( pedantic OPTIONAL RESULT_VARIABLE HAS_PEDANTIC )
Include ( cmake_tests OPTIONAL RESULT_VARIABLE HAS_CMAKE_TESTS )

# Test ############################################################################################

Find_Package ( GTest )
If ( NOT "${GTest_FOUND}" )
Return ( )
EndIf ( )

File ( GLOB_RECURSE LIBINTERFACE_TEST_HEADER_FILES
${CMAKE_CURRENT_SOURCE_DIR}/*.h )
File ( GLOB_RECURSE LIBINTERFACE_TEST_INLINE_FILES
${CMAKE_CURRENT_SOURCE_DIR}/*.inl )
File ( GLOB_RECURSE LIBINTERFACE_TEST_SOURCE_FILES
RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/*.cpp )

ForEach ( FILE IN LISTS LIBINTERFACE_TEST_SOURCE_FILES )
# add test
Get_Filename_Component ( TEST_DIR ${FILE} DIRECTORY )
Get_Filename_Component ( TEST_NAME ${FILE} NAME_WE )
Set ( TEST_NAME "${TEST_DIR}/${TEST_NAME}" )
String ( REPLACE "\\" "-" TEST_NAME "${TEST_NAME}" )
String ( REPLACE "/" "-" TEST_NAME "${TEST_NAME}" )
String ( REPLACE "_" "-" TEST_NAME "${TEST_NAME}" )
Set ( TEST_NAME "test-${TEST_NAME}" )
Add_Executable ( ${TEST_NAME}
EXCLUDE_FROM_ALL
${LIBINTERFACE_TEST_HEADER_FILES}
${LIBINTERFACE_TEST_INLINE_FILES}
${FILE} )
Target_Link_Libraries ( ${TEST_NAME}
PUBLIC
libinterface
GTest::Main )

# pedantic
If ( HAS_PEDANTIC )
Pedantic_Apply_Flags_Target ( ${TEST_NAME} ALL )
EndIf ( )

# test
If ( HAS_CMAKE_TESTS )
Add_CMake_Test ( NAME ${TEST_NAME} TARGET ${TEST_NAME} )
Else ( )
Add_Test ( NAME ${TEST_NAME} COMMAND ${TEST_NAME} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} )
EndIf ( )
EndForEach ( )

+ 10
- 0
projects/libinterface/test/libinterface/libinterface_tests.cpp Näytä tiedosto

@@ -0,0 +1,10 @@
#include <gtest/gtest.h>

#include <libinterface.h>

using namespace ::testing;
using namespace ::libinterface;

TEST(libinterface_tests, dummy)
{
}

+ 47
- 47
tool Näytä tiedosto

@@ -5,6 +5,7 @@ ScriptDir=$(dirname "${ScriptFile}")

UseGit=1
Verbose=0
Update=0
CMakeModules=""
CMakeModulesForced=""
Operations=()
@@ -41,6 +42,9 @@ Parameters:
-g|--group <directory>
Create a new project group at the given directory.

-i|--interface <name> <directory>
Create a new interface library project with the given name at the given directory.

-l|--library <name> <directory>
Create a new library project with the given name at the given directory.

@@ -54,6 +58,9 @@ Parameters:
-n|--nogit
Does not initialize a new git repository when creating a new project group.

-u|--update
Update an exsisting project.

-v|--verbose
Print extra debug output.

@@ -142,11 +149,12 @@ function CreateGroup()
done
}

function CreateLibrary()
function CreateProject()
{
name="$1"
dir="$2"
Log "\nCreate Library: $1 $2"
src="$3"
Log "\nCreate Project $1 in director $2"

# Create directory
Log " Create directory: $dir"
@@ -169,65 +177,37 @@ function CreateLibrary()

# Copy files
Log " Copy files"
srcDir="$ScriptDir/projects/libhelloworld"
srcDir="$ScriptDir/projects/$src"
for file in $(find $srcDir -type f); do

targetFile="${file/$srcDir/}"
targetFile="${dir}${targetFile}"
targetFile="${targetFile//$src/$name}"

# exclude build directory and cmake modules
if [[ $file == $srcDir/build/* ]] \
|| [[ $file == $srcDir/cmake/modules/* ]]
then
relFile=.${file/$srcDir/}
Verbose " Ignore $relFile"

# ignore git files
elif [[ $UseGit -eq 0 ]] \
&& [[ $file == $srcDir/.git* ]]
then
relFile=.${file/$srcDir/}
Verbose " Ignore $relFile"
else
Copy "$srcDir" "$dir" "${file/$srcDir/}" "libhelloworld" "$name"
fi
done
}

function CreateExecutable()
{
name="$1"
dir="$2"
Log "\nCreate Executable: $1 $2"

# Create directory
Log " Create directory: $dir"
mkdir -p "$dir" \
|| Panic "Unable to create directory: $dir!"

# Create git repository
Log " Create git repository"
if [[ $UseGit -eq 1 ]]; then
git -C $dir init \
|| Panic "Git init failed!"

# Add cmake modules
Log " Add git submodule for CMake modules"
if [[ -n "$CMakeModules" ]]; then
git -C $dir submodule add $CMakeModulesForced "$CMakeModules" "cmake/modules" \
|| Panic "Git submodule add failed!"
fi
fi

# Copy files
Log " Copy files"
srcDir="$ScriptDir/projects/helloworld"
for file in $(find $srcDir -type f); do
if [[ $file == $srcDir/build/* ]] \
|| [[ $file == $srcDir/cmake/modules/* ]]
then
relFile=.${file/$srcDir/}
Verbose " Ignore $relFile"
elif [[ $UseGit -eq 0 ]] \
&& [[ $file == $srcDir/.git* ]]
# update
elif [[ $Update -eq 1 ]] \
&& [[ ! -f ${targetFile} ]]
then
relFile=.${file/$srcDir/}
Verbose " Ignore $relFile"

# copy
else
Copy "$srcDir" "$dir" "${file/$srcDir/}" "helloworld" "$name"
Copy "$srcDir" "$dir" "${file/$srcDir/}" "$src" "$name"
fi
done
}
@@ -244,6 +224,16 @@ while [ $# -gt 0 ]; do
shift
;;

"-i" | "--interface" )
if [ $# -lt 3 ]; then
Panic "Parameter $1 expects exactly two parameter!"
fi
tmp=$(readlink -m "$3")
Operations+=("intf:$2:$tmp")
shift
shift
;;

"-l" | "--library" )
if [ $# -lt 3 ]; then
Panic "Parameter $1 expects exactly two parameter!"
@@ -281,6 +271,10 @@ while [ $# -gt 0 ]; do
shift
;;

"-u" | "--update")
Update=1
;;

"-n" | "--nogit" )
UseGit=0
;;
@@ -310,16 +304,22 @@ for data in "${Operations[@]}"; do
CreateGroup "$dir"
;;

intf)
name=$(echo $data | awk -F: '{ print $2 }')
dir=$(echo $data | awk -F: '{ print $3 }')
CreateProject "$name" "$dir" "libinterface"
;;

lib)
name=$(echo $data | awk -F: '{ print $2 }')
dir=$(echo $data | awk -F: '{ print $3 }')
CreateLibrary "$name" "$dir"
CreateProject "$name" "$dir" "libhelloworld"
;;

exe)
name=$(echo $data | awk -F: '{ print $2 }')
dir=$(echo $data | awk -F: '{ print $3 }')
CreateExecutable "$name" "$dir"
CreateProject "$name" "$dir" "helloworld"
;;

*)


Ladataan…
Peruuta
Tallenna