From 79009fa0674d90e03b7a7bd958f7ee1e20d9b194 Mon Sep 17 00:00:00 2001 From: Peng Li Date: Tue, 17 Jul 2018 19:17:54 +0800 Subject: [PATCH] Add Sconscript for unit test --- README.md | 12 ++++++++++++ SConstruct | 25 +++++++++++++++++++++---- {src => include}/Detector.h | 0 {src => include}/Engine.h | 0 {src => include}/Logger.h | 0 {src => include}/Metrics.h | 0 {src => include}/MultiTracker.h | 0 {src => include}/SharedPtr.h | 0 {src => include}/Tracker.h | 0 {src => include}/VideoReader.h | 0 {src => include}/VideoSource.h | 0 include/test.h | 6 ++++++ main.cpp | 4 ++-- src/test.cpp | 8 ++++++++ test/SConscript | 13 +++++++++++++ test/test-unittest.cpp | 12 ++++++++++++ 16 files changed, 74 insertions(+), 6 deletions(-) rename {src => include}/Detector.h (100%) rename {src => include}/Engine.h (100%) rename {src => include}/Logger.h (100%) rename {src => include}/Metrics.h (100%) rename {src => include}/MultiTracker.h (100%) rename {src => include}/SharedPtr.h (100%) rename {src => include}/Tracker.h (100%) rename {src => include}/VideoReader.h (100%) rename {src => include}/VideoSource.h (100%) create mode 100644 include/test.h create mode 100644 src/test.cpp create mode 100644 test/SConscript create mode 100644 test/test-unittest.cpp diff --git a/README.md b/README.md index 51122bf..36d7542 100644 --- a/README.md +++ b/README.md @@ -10,3 +10,15 @@ Tracker++ cpp version on Linux (arm) ### Run `./main` + + +## Build with `scons` +install scons tool `apt-get install scons` + +- Run `scons` to build the `src/` and `main`. It will generate a library +`libtracker.a` and an executable file `main` under current folder. + +- Run `scons --all` to build source and `test` file. A executable file `TestMain`, +which is used to run the unit test, will be generated under `test` + +- Run `scons --all -c` to clean. diff --git a/SConstruct b/SConstruct index 6556a3e..e779fc9 100644 --- a/SConstruct +++ b/SConstruct @@ -1,12 +1,29 @@ import sys +import os -env = Environment(CC="g++") -env.Append(CPPFLAGS = '-Wall -std=c++11') +# using -j4 by default +SetOption('num_jobs', 4) +AddOption('--all', dest='all', action='store_true', help='Build all include test') + +env = Environment(CXX="g++", + CPPPATH=['#include'], + ALL=GetOption('all')) + +env.Append(CCFLAGS = ['-Wall', '-std=c++11']) env.ParseConfig("pkg-config --libs opencv log4cpp") -#env.Append(LIBS=['-llog4cpp', '-lpthread']) -obj = env.Object(Glob("src/*.cpp")) + env.Object("main.cpp") +#obj = env.Object(Glob("src/*.cpp")) + env.Object("main.cpp") +obj = env.Object('main.cpp') +env.StaticLibrary('tracker', Glob('src/*.cpp')) + +#print env['LINKFLAGS'] +#print env['LIBS'] +env.Append(LIBS = ['tracker']) +env.Append(LIBPATH=['#.']) +#env.Program("main", 'main.cpp', LIBS=['tracker'], LIBPATH=['.']) env.Program("main", list(obj)) +if GetOption('all'): + SConscript('test/SConscript', exports='env') diff --git a/src/Detector.h b/include/Detector.h similarity index 100% rename from src/Detector.h rename to include/Detector.h diff --git a/src/Engine.h b/include/Engine.h similarity index 100% rename from src/Engine.h rename to include/Engine.h diff --git a/src/Logger.h b/include/Logger.h similarity index 100% rename from src/Logger.h rename to include/Logger.h diff --git a/src/Metrics.h b/include/Metrics.h similarity index 100% rename from src/Metrics.h rename to include/Metrics.h diff --git a/src/MultiTracker.h b/include/MultiTracker.h similarity index 100% rename from src/MultiTracker.h rename to include/MultiTracker.h diff --git a/src/SharedPtr.h b/include/SharedPtr.h similarity index 100% rename from src/SharedPtr.h rename to include/SharedPtr.h diff --git a/src/Tracker.h b/include/Tracker.h similarity index 100% rename from src/Tracker.h rename to include/Tracker.h diff --git a/src/VideoReader.h b/include/VideoReader.h similarity index 100% rename from src/VideoReader.h rename to include/VideoReader.h diff --git a/src/VideoSource.h b/include/VideoSource.h similarity index 100% rename from src/VideoSource.h rename to include/VideoSource.h diff --git a/include/test.h b/include/test.h new file mode 100644 index 0000000..cf43d54 --- /dev/null +++ b/include/test.h @@ -0,0 +1,6 @@ +#ifndef __TEST_H__ +#define __TEST_H__ + +int sum(int a, int b); + +#endif // __TEST_H__ diff --git a/main.cpp b/main.cpp index 83affc2..1dbaef5 100644 --- a/main.cpp +++ b/main.cpp @@ -1,7 +1,7 @@ #include -#include "src/Engine.h" +#include "Engine.h" #include -#include "src/Logger.h" +#include "Logger.h" #define TAG "Main" diff --git a/src/test.cpp b/src/test.cpp new file mode 100644 index 0000000..fef6dc4 --- /dev/null +++ b/src/test.cpp @@ -0,0 +1,8 @@ +#include "test.h" + +#include + +int sum(int a, int b) +{ + return a + b; +} diff --git a/test/SConscript b/test/SConscript new file mode 100644 index 0000000..7e05fba --- /dev/null +++ b/test/SConscript @@ -0,0 +1,13 @@ +import sys, os + +Import('env') + +env1 = env.Clone() + +env1.Append(CPPPATH = ['#third_party/googletest/include']) +env1.Append(LIBPATH = ['#third_party/googletest/lib']) +env1['LIBS'] = ['tracker', 'gtest', 'pthread'] + +obj = env1.Object(Glob("*.cpp")) + +env1.Program("TestMain", list(obj)) diff --git a/test/test-unittest.cpp b/test/test-unittest.cpp new file mode 100644 index 0000000..a7459d6 --- /dev/null +++ b/test/test-unittest.cpp @@ -0,0 +1,12 @@ +#include "test.h" +#include "gtest/gtest.h" + +TEST(FactorialTest, Negative) { + // This test is named "Negative", and belongs to the "FactorialTest" + // test case. + EXPECT_EQ(2, sum(1, 2)); + //EXPECT_GT(Factorial(-10), 0); + +} + + -- 2.11.0