From 25704bab6ea1bf0c1f4e81854c8056021bffa430 Mon Sep 17 00:00:00 2001 From: David Vojtek <david.vojtek1@vsb.cz> Date: Mon, 8 Oct 2018 13:01:06 +0200 Subject: [PATCH] . --- CMakeLists.txt | 19 ++- build.bat | 2 +- .../windows/win_VS_build_x64_debug.bat | 121 ++++++++---------- src/CMakeLists.txt | 9 +- src/tests/Particle_test.cpp | 13 +- 5 files changed, 75 insertions(+), 89 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index bb879ae5..5847810b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -21,7 +21,7 @@ if (NOT CMAKE_BUILD_TYPE) set (CMAKE_BUILD_TYPE RELEASE CACHE STRING "Choose the type of build, options are: None Debug Release." FORCE) -#elseif("CMAKE_BUILD_TYPE" STREQUAL "Debug") +elseif("CMAKE_BUILD_TYPE" STREQUAL "Debug") #TODO rewrite to use add_compile_definitions endif (NOT CMAKE_BUILD_TYPE) @@ -39,15 +39,15 @@ endif() set(CMAKE_CXX_STANDARD 17) #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" ) -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mbig-obj") + if( "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel" ) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -xHost" ) -elseif( "${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC" ) +elseif( "${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC" ) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W0 /bigobj") add_compile_options("/D _SCL_SECURE_NO_WARNINGS") add_compile_options("/D_CRT_SECURE_NO_WARNINGS") -#elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MINGW") -# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mbig-obj") +elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MINGW") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mbig-obj") else() set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall") endif() @@ -71,9 +71,9 @@ set(Boost_DEBUG ON) find_package( Boost - COMPONENTS - system - serialization + COMPONENTS + system + serialization random ) @@ -127,5 +127,4 @@ if("${BUILD_LIB}" STREQUAL "no") endif() -add_subdirectory(${SRC_DIR} ${PROJECT_BINARY_DIR}) -message("first cmake done") +add_subdirectory(${SRC_DIR} ${PROJECT_BINARY_DIR}) \ No newline at end of file diff --git a/build.bat b/build.bat index ef30bdbb..afdd8fd3 100644 --- a/build.bat +++ b/build.bat @@ -5,7 +5,7 @@ set CLEAN_AFTER=no call clean.bat cd build_scripts\windows -call win_download_dependencies + set DEPENDENCIES_LINK_TYPE=static call win_VS_build_x64_debug.bat cd ..\.. diff --git a/build_scripts/windows/win_VS_build_x64_debug.bat b/build_scripts/windows/win_VS_build_x64_debug.bat index 0ee776a4..21cd7c8d 100644 --- a/build_scripts/windows/win_VS_build_x64_debug.bat +++ b/build_scripts/windows/win_VS_build_x64_debug.bat @@ -9,9 +9,17 @@ set "BUILD_TESTS=" set "BUILD_LIB=" set "BUILD_SOMETHING=" set "BUILD_SOMETHING_LIB=" +set "BOOST_ROOT=" +set "LIB4NEURO_INCLUDE_DIR=" +set "MAKEFILE_GENERATOR=" +set "LINK_TYPE=" +set "CLEAN_AF=" rem call VsDevCmd.bat +set BOOST_ROOT=%cd%..\..\external_dependencies\boost +set LIB4NEURO_INCLUDE_DIR=%cd%..\..\include + rem Should we rebuild BOOST? (yes/no) set REBUILD_BOOST=no @@ -21,11 +29,21 @@ set BUILD_EXAMPLES=yes rem Should we build the unit-tests? (yes/no) set BUILD_TESTS=yes -rem Should we build the lib4neuro library? (yes) +rem Should we build the lib4neuro library? (yes/no) set BUILD_LIB=yes rem **********************DO NOT CHANGE BEYOND THIS LINE**************************************** +set LINK_TYPE=static +IF "%DEPENDENCIES_LINK_TYPE%" == "shared" ( + set LINK_TYPE=shared +) + +set CLEAN_AF=yes +IF "%CLEAN_AFTER%"=="no" ( + set CLEAN_AF=no +) + set BUILD_SOMETHING=no set BUILD_SOMETHING_LIB=no @@ -35,18 +53,21 @@ IF "%BUILD_LIB%"=="yes" ( echo Lib4neuro will be built in 'build\lib\' set BUILD_SOMETHING=yes set BUILD_SOMETHING_LIB=yes + call win_clean_lib.bat ) IF "%BUILD_TESTS%"=="yes" ( echo Lib4neuro unit tests will be built in 'build\unit-tests' set BUILD_SOMETHING=yes set BUILD_SOMETHING_LIB=yes + call win_clean_tests.bat ) IF "%BUILD_EXAMPLES%"=="yes" ( echo Lib4neuro examples will be built in 'build\examples' set BUILD_SOMETHING=yes set BUILD_SOMETHING_LIB=yes + call win_clean_examples.bat ) IF "%REBUILD_BOOST%"=="yes" ( @@ -69,88 +90,48 @@ IF "%REBUILD_BOOST%"=="yes" ( cd external_dependencies\boost - echo "DEPENDENCIES_LINK_TYPE %DEPENDENCIES_LINK_TYPE%" - - .\b2 --layout=system variant=debug link=static address-model=64 --with-system --with-serialization --with-random || exit 1 + .\b2 --layout=system variant=debug link=%LINK_TYPE% address-model=64 --with-system --with-serialization --with-random || goto error_occured_boost cd ..\..\build_scripts\windows - - echo "LIBRARIES BOOST:" - dir ..\..\external_dependencies\boost\stage\lib - ) IF "%BUILD_SOMETHING_LIB%"=="yes" ( - - IF "%BUILD_LIB%"=="yes" ( - call win_clean_lib.bat - ) - - IF "%BUILD_EXAMPLES%"=="yes" ( - call win_clean_examples.bat - ) - - IF "%BUILD_TESTS%"=="yes" ( - call win_clean_tests.bat - ) - - title Building the 'lib4neuro' project for Debug (preparing makefiles) + title Building the 'lib4neuro' project for Debug [preparing makefiles] rem C++ compiler (Requires Visual Studio 2017) set CXX_COMPILER=cl set C_COMPILER=cl set MAKEFILE_GENERATOR="Visual Studio 15 2017 Win64" - - cd ..\.. - cmake -G "Visual Studio 15 2017 Win64" -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_COMPILER=%CXX_COMPILER% -DCMAKE_C_COMPILER=%C_COMPILER% -DBOOST_LIBRARYDIR=%BOOST_LIBRARYDIR% -DBOOST_INCLUDEDIR=%BOOST_INCLUDEDIR% -DBUILD_TESTS=%BUILD_TESTS% -DBUILD_EXAMPLES=%BUILD_EXAMPLES% -DBUILD_LIB=%BUILD_LIB% -DLIB4NEURO_DIR=build\lib -DDEPENDENCIES_LINK_TYPE=static . || exit 1 - title Building the 'lib4neuro' project for Debug (building) - (cmake --build .) && (echo "Build complete.") || exit 1 + cd ..\.. + cmake -G "Visual Studio 15 2017 Win64" -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_COMPILER=%CXX_COMPILER% -DCMAKE_C_COMPILER=%C_COMPILER% -DBOOST_ROOT=%BOOST_ROOT% -DBOOST_LIBRARYDIR=%BOOST_LIBRARYDIR% -DBOOST_INCLUDEDIR=%BOOST_INCLUDEDIR% -DBUILD_TESTS=%BUILD_TESTS% -DBUILD_EXAMPLES=%BUILD_EXAMPLES% -DBUILD_LIB=%BUILD_LIB% -DLIB4NEURO_DIR=build\lib -DDEPENDENCIES_LINK_TYPE=%LINK_TYPE% -DLIB4NEURO_INCLUDE_DIR=%LIB4NEURO_INCLUDE_DIR% . || goto error_occured_lib + title Building the 'lib4neuro' project for Debug [building] + cmake --build . --config Debug && echo "Build complete." || goto error_occured_lib cd build_scripts\windows - - IF "%BUILD_LIB%"=="yes" ( - cd ..\.. - - rem Moving LIB files around to have a neater structure - xcopy /y build\bin\Debug\lib4neuro.dll build\lib 2>NUL - xcopy /y build\lib\Debug\lib4neuro.lib build\lib 2>NUL - - rmdir /s /q "build\lib\Debug" 2> NUL - rmdir /s /q "build\libboost_unit_test.dir" 2> NUL - - cd build_scripts\windows - ) - - IF "%BUILD_EXAMPLES%"=="yes" ( - cd ..\.. - - rem Moving EXAMPLE files around to have a neater structure - mkdir build\tmp - xcopy /y build\examples\bin\Debug\*.exe build\tmp 2>NUL - rmdir /s /q "build\examples" 2> NUL - move build\tmp build\examples - - xcopy /y build\lib\*.dll build\examples 2>NUL - - cd build_scripts\windows - ) - - IF "%BUILD_TESTS%"=="yes" ( - cd ..\.. - - rem Moving EXAMPLE files around to have a neater structure - mkdir build\tmp - xcopy /y build\unit-tests\bin\Debug\*.exe build\tmp 2>NUL - rmdir /s /q "build\unit-tests" 2> NUL - move build\tmp build\unit-tests - - xcopy /y build\lib\*.dll build\unit-tests 2>NUL - - cd build_scripts\windows - ) - - call win_clean_garbage.bat ) +goto final_goto + +:error_occured_lib +cd build_scripts\windows +goto final_goto_error + +:error_occured_boost +cd ..\..\build_scripts\windows +goto final_goto_error + + +:final_goto_error +IF "%CLEAN_AF%"=="yes" IF "%BUILD_LIB%"=="yes" call win_clean_after_lib.bat +IF "%CLEAN_AF%"=="yes" IF "%BUILD_EXAMPLES%"=="yes" call win_clean_after_examples.bat +IF "%CLEAN_AF%"=="yes" IF "%BUILD_TESTS%"=="yes" call win_clean_after_tests.bat +IF "%CLEAN_AF%"=="yes" IF "%BUILD_SOMETHING_LIB%"=="yes" call win_clean_garbage.bat +exit 1 + +:final_goto +IF "%CLEAN_AF%"=="yes" IF "%BUILD_LIB%"=="yes" call win_clean_after_lib.bat +IF "%CLEAN_AF%"=="yes" IF "%BUILD_EXAMPLES%"=="yes" call win_clean_after_examples.bat +IF "%CLEAN_AF%"=="yes" IF "%BUILD_TESTS%"=="yes" call win_clean_after_tests.bat +IF "%CLEAN_AF%"=="yes" IF "%BUILD_SOMETHING_LIB%"=="yes" call win_clean_garbage.bat \ No newline at end of file diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index f8b8677e..3cb39aff 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,6 +1,4 @@ -message("second cmake done") - if ("${BUILD_TESTS}" STREQUAL "yes") add_subdirectory(tests unit-tests) endif () @@ -37,15 +35,15 @@ if ("${BUILD_LIB}" STREQUAL "yes") add_library(lib4neuro SHARED Neuron/Neuron.cpp Neuron/NeuronBinary.cpp - Neuron/NeuronConstant.cpp + Neuron/NeuronConstant.cpp Neuron/NeuronLinear.cpp Neuron/NeuronLogistic.cpp Network/NeuralNetwork.cpp Network/NeuralNetworkSum.cpp NetConnection/ConnectionFunctionGeneral.cpp NetConnection/ConnectionFunctionIdentity.cpp - LearningMethods/ParticleSwarm.cpp - LearningMethods/GradientDescent.cpp + LearningMethods/ParticleSwarm.cpp + LearningMethods/GradientDescent.cpp DataSet/DataSet.cpp ErrorFunction/ErrorFunctions.cpp Solvers/DESolver.cpp @@ -101,4 +99,3 @@ if ("${BUILD_LIB}" STREQUAL "yes") ) endif () - diff --git a/src/tests/Particle_test.cpp b/src/tests/Particle_test.cpp index bcd3a1ce..e59d075a 100644 --- a/src/tests/Particle_test.cpp +++ b/src/tests/Particle_test.cpp @@ -47,7 +47,6 @@ BOOST_AUTO_TEST_CASE(Particle_construction_test) { MOCK_EXPECT(error.get_dimension).once().returns(5); MOCK_EXPECT(error.eval).once().returns(0.8); BOOST_CHECK_NO_THROW(Particle(&error, &domain_bound)); - mock::verify( error ); } BOOST_AUTO_TEST_CASE(Particle_get_coordinate_test) { @@ -61,7 +60,17 @@ BOOST_AUTO_TEST_CASE(Particle_get_coordinate_test) { Particle particle2(&error, &domain_bound); BOOST_CHECK(*particle1.get_coordinate() != *particle2.get_coordinate()); - mock::verify( error ); +} + +BOOST_AUTO_TEST_CASE(Particle_get_optimal_value_test) { + std::vector<double> domain_bound{1, 2, 3, 4, 5}; + mock_Error error; + + MOCK_EXPECT(error.get_dimension).returns(5); + MOCK_EXPECT(error.eval).returns(0.8); + + Particle particle1(&error, &domain_bound); + BOOST_CHECK_EQUAL(0.8, particle1.get_optimal_value()); } //Random -- GitLab