diff --git a/CMakeLists.txt b/CMakeLists.txt index c5a4a78..def33fb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,55 +1,63 @@ cmake_minimum_required(VERSION 2.8) -project (easypr) +project(easypr) # c++11 required include(CheckCXXCompilerFlag) CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11) CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X) -if(COMPILER_SUPPORTS_CXX11) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") -elseif(COMPILER_SUPPORTS_CXX0X) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x") -else() - message(STATUS "The compiler ${CMAKE_CXX_COMPILER} doesn’t support C++11. Please upgrade or use a different C++ compiler.") -endif() +if (COMPILER_SUPPORTS_CXX11) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") +elseif (COMPILER_SUPPORTS_CXX0X) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x") +else () + message(STATUS "The compiler ${CMAKE_CXX_COMPILER} doesn’t support C++11. Please upgrade or use a different C++ compiler.") +endif () -set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} "/usr/local/opt/opencv3") -# opencv3 package required +# OpenVC3 required find_package(OpenCV 3.1.0 REQUIRED) -include_directories(${OpenCV_INCLUDE_DIRS}) -# easypr library +# where to find header files +include_directories(.) include_directories(include) +include_directories(${OpenCV_INCLUDE_DIRS}) + +# sources to be compiled set(SOURCE_FILES - src/core/core_func.cpp - src/core/chars_identify.cpp - src/core/chars_recognise.cpp - src/core/chars_segment.cpp - src/core/feature.cpp - src/core/plate_detect.cpp - src/core/plate_judge.cpp - src/core/plate_locate.cpp - src/core/plate_recognize.cpp - src/core/better_mser.cpp - src/train/ann_train.cpp - src/train/svm_train.cpp - src/train/train.cpp - src/preprocess/deface.cpp - src/preprocess/gdts.cpp - src/preprocess/mc_data.cpp - src/util/util.cpp - src/util/program_options.cpp - src/util/kv.cpp - src/third/erfilter.cpp - src/third/helper.cpp - src/third/lbp.cpp -) + src/core/core_func.cpp + src/core/chars_identify.cpp + src/core/chars_recognise.cpp + src/core/chars_segment.cpp + src/core/feature.cpp + src/core/plate_detect.cpp + src/core/plate_judge.cpp + src/core/plate_locate.cpp + src/core/plate_recognize.cpp + src/core/better_mser.cpp + + src/train/ann_train.cpp + src/train/svm_train.cpp + src/train/train.cpp + + src/preprocess/deface.cpp + src/preprocess/gdts.cpp + src/preprocess/mc_data.cpp + + src/util/util.cpp + src/util/program_options.cpp + src/util/kv.cpp + + thirdparty/xmlParser/xmlParser.cpp + thirdparty/erfilter.cpp + thirdparty/helper.cpp + thirdparty/lbp.cpp + ) + +# pack objects to static library add_library(easypr STATIC ${SOURCE_FILES}) # test cases -add_executable(demo test/main.cpp) +add_executable(demo_linux_amd64 test/main.cpp) -# link -target_link_libraries(demo ${OpenCV_LIBS} easypr ${OpenCV_LIBS}) -set_target_properties(demo PROPERTIES RUNTIME_OUTPUT_DIRECTORY ../) \ No newline at end of file +# link opencv libs +target_link_libraries(demo_linux_amd64 easypr ${OpenCV_LIBS}) diff --git a/build.sh b/build.sh index 5c9bdbb..464ff5c 100755 --- a/build.sh +++ b/build.sh @@ -1,9 +1,23 @@ #!/usr/bin/env bash -build_tmp="_build/" +__dirname=`dirname $0` +BUILD_TMP_PATH=${__dirname}/_build -mkdir ${build_tmp} 2>/dev/null -cd ${build_tmp} +mkdir -p ${BUILD_TMP_PATH} && cd ${BUILD_TMP_PATH} -cmake --clean-first .. -make -j 4 --makefile Makefile +# Generate Makefile +cmake --clean-first -DCMAKE_BUILD_TYPE=Release .. + +# Compile +if [ -f 'Makefile' ];then + make --jobs 4 +fi + +# Copy binary files to bin/ +BINARY_PATH=../bin + +cp libeasypr.a ${BINARY_PATH} +cp demo_linux_amd64 ${BINARY_PATH} + +# Run demo program +cd .. && bin/demo_linux_amd64