Skip to content
Snippets Groups Projects
Commit 853fa24a authored by Sergi Hernandez's avatar Sergi Hernandez
Browse files

Added on argument in the script to include or not the test framework using googletest.

parent ae04fb14
No related branches found
No related tags found
No related merge requests found
# Pre-requisites about cmake itself
CMAKE_MINIMUM_REQUIRED(VERSION 2.4)
if(COMMAND cmake_policy)
cmake_policy(SET CMP0005 NEW)
cmake_policy(SET CMP0003 NEW)
endif(COMMAND cmake_policy)
# The project name and the type of project
PROJECT(project_name)
SET(EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/bin)
SET(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/lib)
SET(CMAKE_INSTALL_PREFIX /usr/local)
IF (NOT CMAKE_BUILD_TYPE)
SET(CMAKE_BUILD_TYPE "DEBUG")
ENDIF (NOT CMAKE_BUILD_TYPE)
SET(CMAKE_CXX_FLAGS_RELEASE "-O3 -D_REENTRANT")
SET(CMAKE_CXX_FLAGS_DEBUG "-g -Wall -D_REENTRANT -O0 --coverage -fprofile-arcs")
SET(CMAKE_LINK_FLAGS_DEBUG "--coverage -fprofile-arcs")
#
# Add ctest
#
INCLUDE(CTest)
ADD_SUBDIRECTORY(src)
ADD_SUBDIRECTORY(test/gtest)
ADD_SUBDIRECTORY(test)
FIND_PACKAGE(Doxygen)
FIND_PATH(IRI_DOC_DIR doxygen.conf ${CMAKE_SOURCE_DIR}/doc/iri_doc/)
IF (IRI_DOC_DIR)
ADD_CUSTOM_TARGET (doc ${DOXYGEN_EXECUTABLE} ${CMAKE_SOURCE_DIR}/doc/iri_doc/doxygen.conf)
ELSE (IRI_DOC_DIR)
ADD_CUSTOM_TARGET (doc ${DOXYGEN_EXECUTABLE} ${CMAKE_SOURCE_DIR}/doc/doxygen.conf)
ENDIF (IRI_DOC_DIR)
ADD_CUSTOM_TARGET (distclean @echo cleaning cmake files)
IF (UNIX)
ADD_CUSTOM_COMMAND(
COMMENT "distribution clean"
COMMAND make ARGS clean
COMMAND rm ARGS -rf ${CMAKE_SOURCE_DIR}/build/*
TARGET distclean
)
ELSE(UNIX)
ADD_CUSTOM_COMMAND(
COMMENT "distclean only implemented in unix"
TARGET distclean
)
ENDIF(UNIX)
ADD_CUSTOM_TARGET (uninstall @echo uninstall package)
IF (UNIX)
ADD_CUSTOM_COMMAND(
COMMENT "uninstall package"
COMMAND xargs ARGS rm < install_manifest.txt
TARGET uninstall
)
ELSE(UNIX)
ADD_CUSTOM_COMMAND(
COMMENT "uninstall only implemented in unix"
TARGET uninstall
)
ENDIF(UNIX)
...@@ -4,8 +4,9 @@ DEP= ...@@ -4,8 +4,9 @@ DEP=
TYPE= TYPE=
PROJECT_NAME= PROJECT_NAME=
NAME= NAME=
TEST=0
while getopts “t:p:n:d” OPTION while getopts “t:p:n:dg” OPTION
do do
case $OPTION in case $OPTION in
t) t)
...@@ -20,6 +21,9 @@ do ...@@ -20,6 +21,9 @@ do
d) d)
DEP=$OPTARG DEP=$OPTARG
;; ;;
g)
TEST=1
;;
?) ?)
echo invalid argument $OPTION echo invalid argument $OPTION
exit exit
...@@ -155,7 +159,13 @@ rm ReadMe_template.md ...@@ -155,7 +159,13 @@ rm ReadMe_template.md
#Set the project name on the CMakeLists.txt script file #Set the project name on the CMakeLists.txt script file
NEW_NAME=$(echo $NAME | sed 's/_/-/g') NEW_NAME=$(echo $NAME | sed 's/_/-/g')
sed 's/project_name/'$NEW_NAME'/g' <CMakeLists_template.txt >./CMakeLists.txt if [ $TEST = 1 ]
then
sed 's/project_name/'$NEW_NAME'/g' <CMakeLists_test_template.txt >./CMakeLists.txt
else
sed 's/project_name/'$NEW_NAME'/g' <CMakeLists_template.txt >./CMakeLists.txt
fi
rm CMakeLists_test_template.txt
rm CMakeLists_template.txt rm CMakeLists_template.txt
#Set the project name on the doxygen_project_name.dox sript file #Set the project name on the doxygen_project_name.dox sript file
...@@ -251,6 +261,20 @@ else ...@@ -251,6 +261,20 @@ else
sed 's/library_name/'$NAME'/g' <driver_example_src_template.cpp >./src/examples/${NAME}_test.cpp sed 's/library_name/'$NAME'/g' <driver_example_src_template.cpp >./src/examples/${NAME}_test.cpp
rm application_src_template.cpp rm application_src_template.cpp
fi fi
if [ $TEST = 1 ]
then
Library_name=$(echo $NAME | sed 's/\([a-zA-Z]\)\([a-zA-Z0-9]*\)/\u\1\2/g')
sed 's/library_name/'$NEW_NAME'/g' <./test/CMakeLists_template.txt >./test/tmp.txt
sed 's/Library_name/'$Library_name'/g' <./test/tmp.txt >./test/CMakeLists.txt
rm ./test/CMakeLists_template.txt
rm ./test/tmp.txt
sed 's/library_name/'$NAME'/g' <./test/test_template.cpp >./test/${NAME}_test.cpp
rm ./test/test_template.cpp
else
rm -rf test
fi
rm driver_src_template.cpp rm driver_src_template.cpp
rm driver_header_template.h rm driver_header_template.h
rm driver_example_src_template.cpp rm driver_example_src_template.cpp
......
include_directories(${GTEST_INCLUDE_DIRS})
include_directories(${GMOCK_INCLUDE_DIRS})
include_directories(${PROJECT_SOURCE_DIR}/include)
set(CTEST_CUSTOM_COVERAGE_EXCLUDE *)
add_executable(library_name_tests library_name_test.cpp)
add_dependencies(library_name_tests googletest)
target_link_libraries(library_name_tests ${GTEST_LIBS_DIR}/libgtest.a ${GTEST_LIBS_DIR}/libgtest_main.a)
target_link_libraries(library_name_tests ${GMOCK_LIBS_DIR}/libgmock.a ${GMOCK_LIBS_DIR}/libgmock_main.a)
target_link_libraries(library_name_tests pthread)
add_test(NAME Library_name_Test COMMAND library_name_tests)
cmake_minimum_required(VERSION 2.8.8)
project(gtest_builder C CXX)
include(ExternalProject)
ExternalProject_Add(googletest
GIT_REPOSITORY https://github.com/google/googletest.git
CMAKE_ARGS -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG:PATH=DebugLibs
-DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE:PATH=ReleaseLibs
-DCMAKE_CXX_FLAGS=${MSVC_COMPILER_DEFS}
-Dgtest_force_shared_crt=ON
-DBUILD_GTEST=ON
PREFIX "${CMAKE_CURRENT_BINARY_DIR}"
# Disable install step
INSTALL_COMMAND ""
)
# Specify include dir
ExternalProject_Get_Property(googletest source_dir)
set(GTEST_INCLUDE_DIRS ${source_dir}/googletest/include PARENT_SCOPE)
set(GMOCK_INCLUDE_DIRS ${source_dir}/googlemock/include PARENT_SCOPE)
# Specify MainTest's link libraries
ExternalProject_Get_Property(googletest binary_dir)
set(GTEST_LIBS_DIR ${binary_dir}/googlemock/gtest PARENT_SCOPE)
set(GMOCK_LIBS_DIR ${binary_dir}/googlemock PARENT_SCOPE)
// tests.cpp
#include <library_name.h>
#include <gtest/gtest.h>
TEST(library_nameTest, test1) {
}
int main(int argc, char **argv) {
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment