From a8626b59b40b99842bc8b2c4a45cbcd0b1fd70dd Mon Sep 17 00:00:00 2001 From: bbod Date: Tue, 8 Oct 2019 00:38:06 -0600 Subject: [PATCH] HW4 Done --- .gitmodules | 3 + Hw4/.idea/.name | 1 + Hw4/CMakeLists.txt | 91 ++- Hw4/CMakeLists.txt.in | 15 + Hw4/Hw4/cmake-build-debug/googletest-src | 1 + Hw4/_clang-format | 13 + Hw4/cmake-build-debug/ArrayPerformance | Bin 0 -> 85996 bytes Hw4/cmake-build-debug/CMakeCache.txt | 190 +++++- .../ArrayPerformance.dir/CXX.includecache | 32 + .../ArrayPerformance.dir/DependInfo.cmake | 21 + .../ArrayPerformance.dir/build.make | 113 +++ .../ArrayPerformance.dir/cmake_clean.cmake | 11 + .../ArrayPerformance.dir/depend.internal | 9 + .../ArrayPerformance.dir/depend.make | 9 + .../ArrayPerformance.dir/flags.make | 10 + .../CMakeFiles/ArrayPerformance.dir/link.txt | 1 + .../ArrayPerformance.dir/main.cpp.o | Bin 0 -> 98512 bytes .../ArrayPerformance.dir/progress.make | 4 + .../ArrayPerformance.dir/sortutils.cpp.o | Bin 0 -> 182564 bytes .../CMakeFiles/CMakeOutput.log | 38 ++ .../CMakeFiles/CMakeRuleHashes.txt | 2 + .../ClangFormat.dir/DependInfo.cmake | 11 + .../CMakeFiles/ClangFormat.dir/build.make | 76 +++ .../ClangFormat.dir/cmake_clean.cmake | 8 + .../ClangFormat.dir/depend.internal | 3 + .../CMakeFiles/ClangFormat.dir/depend.make | 3 + .../CMakeFiles/ClangFormat.dir/progress.make | 1 + .../CMakeFiles/Makefile.cmake | 34 +- Hw4/cmake-build-debug/CMakeFiles/Makefile2 | 288 +++++++- .../CMakeFiles/TargetDirectories.txt | 30 +- .../UnitTestRunner.dir/CXX.includecache | 330 +++++++++ .../UnitTestRunner.dir/DependInfo.cmake | 25 + .../UnitTestRunner.dir/TestPerformance.cpp.o | Bin 0 -> 329484 bytes .../CMakeFiles/UnitTestRunner.dir/build.make | 115 ++++ .../UnitTestRunner.dir/cmake_clean.cmake | 11 + .../UnitTestRunner.dir/depend.internal | 29 + .../CMakeFiles/UnitTestRunner.dir/depend.make | 29 + .../CMakeFiles/UnitTestRunner.dir/flags.make | 10 + .../CMakeFiles/UnitTestRunner.dir/link.txt | 1 + .../UnitTestRunner.dir/progress.make | 4 + .../UnitTestRunner.dir/sortutils.cpp.o | Bin 0 -> 182564 bytes .../CMakeFiles/clion-log.txt | 14 +- .../CMakeFiles/progress.marks | 2 +- Hw4/cmake-build-debug/Hw4.cbp | 379 ++++++++++- Hw4/cmake-build-debug/Makefile | 195 +++++- Hw4/cmake-build-debug/UnitTestRunner | Bin 0 -> 1567632 bytes .../CMakeDirectoryInformation.cmake | 16 + .../CMakeFiles/progress.marks | 1 + .../googletest-build/CTestTestfile.cmake | 7 + .../googletest-build/Makefile | 184 +++++ .../googletest-build/cmake_install.cmake | 39 ++ .../CMakeDirectoryInformation.cmake | 16 + .../CMakeFiles/gmock.dir/DependInfo.cmake | 25 + .../CMakeFiles/gmock.dir/build.make | 99 +++ .../CMakeFiles/gmock.dir/cmake_clean.cmake | 10 + .../gmock.dir/cmake_clean_target.cmake | 3 + .../CMakeFiles/gmock.dir/depend.make | 2 + .../CMakeFiles/gmock.dir/flags.make | 10 + .../googlemock/CMakeFiles/gmock.dir/link.txt | 2 + .../CMakeFiles/gmock.dir/progress.make | 3 + .../gmock_main.dir/DependInfo.cmake | 26 + .../CMakeFiles/gmock_main.dir/build.make | 99 +++ .../gmock_main.dir/cmake_clean.cmake | 10 + .../gmock_main.dir/cmake_clean_target.cmake | 3 + .../CMakeFiles/gmock_main.dir/depend.make | 2 + .../CMakeFiles/gmock_main.dir/flags.make | 10 + .../CMakeFiles/gmock_main.dir/link.txt | 2 + .../CMakeFiles/gmock_main.dir/progress.make | 3 + .../googlemock/CMakeFiles/progress.marks | 1 + .../googlemock/CTestTestfile.cmake | 7 + .../googletest-build/googlemock/Makefile | 276 ++++++++ .../googlemock/cmake_install.cmake | 67 ++ .../googletest-build/googlemock/gmock.cbp | 259 +++++++ .../googletest-distribution.cbp | 259 +++++++ .../CMakeDirectoryInformation.cmake | 16 + .../lib/cmake/GTest/GTestTargets-debug.cmake | 53 ++ .../Export/lib/cmake/GTest/GTestTargets.cmake | 119 ++++ .../CMakeFiles/gtest.dir/CXX.includecache | 644 ++++++++++++++++++ .../CMakeFiles/gtest.dir/DependInfo.cmake | 22 + .../CMakeFiles/gtest.dir/build.make | 99 +++ .../CMakeFiles/gtest.dir/cmake_clean.cmake | 10 + .../gtest.dir/cmake_clean_target.cmake | 3 + .../CMakeFiles/gtest.dir/depend.internal | 36 + .../CMakeFiles/gtest.dir/depend.make | 36 + .../CMakeFiles/gtest.dir/flags.make | 10 + .../googletest/CMakeFiles/gtest.dir/link.txt | 2 + .../CMakeFiles/gtest.dir/progress.make | 3 + .../CMakeFiles/gtest.dir/src/gtest-all.cc.o | Bin 0 -> 2789184 bytes .../gtest_main.dir/CXX.includecache | 308 +++++++++ .../gtest_main.dir/DependInfo.cmake | 23 + .../CMakeFiles/gtest_main.dir/build.make | 99 +++ .../gtest_main.dir/cmake_clean.cmake | 10 + .../gtest_main.dir/cmake_clean_target.cmake | 3 + .../CMakeFiles/gtest_main.dir/depend.internal | 25 + .../CMakeFiles/gtest_main.dir/depend.make | 25 + .../CMakeFiles/gtest_main.dir/flags.make | 10 + .../CMakeFiles/gtest_main.dir/link.txt | 2 + .../CMakeFiles/gtest_main.dir/progress.make | 3 + .../gtest_main.dir/src/gtest_main.cc.o | Bin 0 -> 18536 bytes .../googletest/CMakeFiles/progress.marks | 1 + .../googletest/CTestTestfile.cmake | 6 + .../googletest-build/googletest/Makefile | 276 ++++++++ .../googletest/cmake_install.cmake | 88 +++ .../googletest/generated/GTestConfig.cmake | 33 + .../generated/GTestConfigVersion.cmake | 37 + .../googletest/generated/gmock.pc | 10 + .../googletest/generated/gmock_main.pc | 10 + .../googletest/generated/gtest.pc | 9 + .../googletest/generated/gtest_main.pc | 10 + .../googletest-build/googletest/gtest.cbp | 153 +++++ .../googletest-download/CMakeCache.txt | 132 ++++ .../CMakeFiles/3.14.5/CMakeSystem.cmake | 15 + .../CMakeDirectoryInformation.cmake | 16 + .../CMakeFiles/CMakeOutput.log | 1 + .../CMakeFiles/CMakeRuleHashes.txt | 11 + .../CMakeFiles/Makefile.cmake | 47 ++ .../googletest-download/CMakeFiles/Makefile2 | 113 +++ .../CMakeFiles/TargetDirectories.txt | 3 + .../CMakeFiles/cmake.check_cache | 1 + .../CMakeFiles/googletest-complete | 0 .../googletest.dir/DependInfo.cmake | 11 + .../CMakeFiles/googletest.dir/Labels.json | 46 ++ .../CMakeFiles/googletest.dir/Labels.txt | 14 + .../CMakeFiles/googletest.dir/build.make | 147 ++++ .../googletest.dir/cmake_clean.cmake | 17 + .../CMakeFiles/googletest.dir/depend.internal | 3 + .../CMakeFiles/googletest.dir/depend.make | 3 + .../CMakeFiles/googletest.dir/progress.make | 10 + .../CMakeFiles/progress.marks | 1 + .../googletest-download/CMakeLists.txt | 15 + .../googletest-download/Makefile | 148 ++++ .../googletest-download/cmake_install.cmake | 44 ++ .../src/googletest-stamp/googletest-build | 0 .../src/googletest-stamp/googletest-configure | 0 .../src/googletest-stamp/googletest-done | 0 .../src/googletest-stamp/googletest-download | 0 .../googletest-gitclone-lastrun.txt | 3 + .../googletest-stamp/googletest-gitinfo.txt | 3 + .../src/googletest-stamp/googletest-install | 0 .../src/googletest-stamp/googletest-mkdir | 0 .../src/googletest-stamp/googletest-patch | 0 .../src/googletest-stamp/googletest-test | 0 .../tmp/googletest-cfgcmd.txt | 1 + .../tmp/googletest-cfgcmd.txt.in | 1 + .../tmp/googletest-gitclone.cmake | 108 +++ .../tmp/googletest-gitupdate.cmake | 160 +++++ Hw4/cmake-build-debug/googletest-src | 1 + Hw4/cmake-build-debug/lib/libgtest_maind.a | Bin 0 -> 18760 bytes Hw4/cmake-build-debug/lib/libgtestd.a | Bin 0 -> 2906352 bytes Hw4/main.cpp | 41 +- Hw4/sortutils.cpp | 226 ++++++ Hw4/sortutils.hpp | 17 +- 152 files changed, 7089 insertions(+), 67 deletions(-) create mode 100644 .gitmodules create mode 100644 Hw4/.idea/.name create mode 100755 Hw4/CMakeLists.txt.in create mode 160000 Hw4/Hw4/cmake-build-debug/googletest-src create mode 100644 Hw4/_clang-format create mode 100755 Hw4/cmake-build-debug/ArrayPerformance create mode 100644 Hw4/cmake-build-debug/CMakeFiles/ArrayPerformance.dir/CXX.includecache create mode 100644 Hw4/cmake-build-debug/CMakeFiles/ArrayPerformance.dir/DependInfo.cmake create mode 100644 Hw4/cmake-build-debug/CMakeFiles/ArrayPerformance.dir/build.make create mode 100644 Hw4/cmake-build-debug/CMakeFiles/ArrayPerformance.dir/cmake_clean.cmake create mode 100644 Hw4/cmake-build-debug/CMakeFiles/ArrayPerformance.dir/depend.internal create mode 100644 Hw4/cmake-build-debug/CMakeFiles/ArrayPerformance.dir/depend.make create mode 100644 Hw4/cmake-build-debug/CMakeFiles/ArrayPerformance.dir/flags.make create mode 100644 Hw4/cmake-build-debug/CMakeFiles/ArrayPerformance.dir/link.txt create mode 100644 Hw4/cmake-build-debug/CMakeFiles/ArrayPerformance.dir/main.cpp.o create mode 100644 Hw4/cmake-build-debug/CMakeFiles/ArrayPerformance.dir/progress.make create mode 100644 Hw4/cmake-build-debug/CMakeFiles/ArrayPerformance.dir/sortutils.cpp.o create mode 100644 Hw4/cmake-build-debug/CMakeFiles/CMakeRuleHashes.txt create mode 100644 Hw4/cmake-build-debug/CMakeFiles/ClangFormat.dir/DependInfo.cmake create mode 100644 Hw4/cmake-build-debug/CMakeFiles/ClangFormat.dir/build.make create mode 100644 Hw4/cmake-build-debug/CMakeFiles/ClangFormat.dir/cmake_clean.cmake create mode 100644 Hw4/cmake-build-debug/CMakeFiles/ClangFormat.dir/depend.internal create mode 100644 Hw4/cmake-build-debug/CMakeFiles/ClangFormat.dir/depend.make create mode 100644 Hw4/cmake-build-debug/CMakeFiles/ClangFormat.dir/progress.make create mode 100644 Hw4/cmake-build-debug/CMakeFiles/UnitTestRunner.dir/CXX.includecache create mode 100644 Hw4/cmake-build-debug/CMakeFiles/UnitTestRunner.dir/DependInfo.cmake create mode 100644 Hw4/cmake-build-debug/CMakeFiles/UnitTestRunner.dir/TestPerformance.cpp.o create mode 100644 Hw4/cmake-build-debug/CMakeFiles/UnitTestRunner.dir/build.make create mode 100644 Hw4/cmake-build-debug/CMakeFiles/UnitTestRunner.dir/cmake_clean.cmake create mode 100644 Hw4/cmake-build-debug/CMakeFiles/UnitTestRunner.dir/depend.internal create mode 100644 Hw4/cmake-build-debug/CMakeFiles/UnitTestRunner.dir/depend.make create mode 100644 Hw4/cmake-build-debug/CMakeFiles/UnitTestRunner.dir/flags.make create mode 100644 Hw4/cmake-build-debug/CMakeFiles/UnitTestRunner.dir/link.txt create mode 100644 Hw4/cmake-build-debug/CMakeFiles/UnitTestRunner.dir/progress.make create mode 100644 Hw4/cmake-build-debug/CMakeFiles/UnitTestRunner.dir/sortutils.cpp.o create mode 100755 Hw4/cmake-build-debug/UnitTestRunner create mode 100644 Hw4/cmake-build-debug/googletest-build/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 Hw4/cmake-build-debug/googletest-build/CMakeFiles/progress.marks create mode 100644 Hw4/cmake-build-debug/googletest-build/CTestTestfile.cmake create mode 100644 Hw4/cmake-build-debug/googletest-build/Makefile create mode 100644 Hw4/cmake-build-debug/googletest-build/cmake_install.cmake create mode 100644 Hw4/cmake-build-debug/googletest-build/googlemock/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 Hw4/cmake-build-debug/googletest-build/googlemock/CMakeFiles/gmock.dir/DependInfo.cmake create mode 100644 Hw4/cmake-build-debug/googletest-build/googlemock/CMakeFiles/gmock.dir/build.make create mode 100644 Hw4/cmake-build-debug/googletest-build/googlemock/CMakeFiles/gmock.dir/cmake_clean.cmake create mode 100644 Hw4/cmake-build-debug/googletest-build/googlemock/CMakeFiles/gmock.dir/cmake_clean_target.cmake create mode 100644 Hw4/cmake-build-debug/googletest-build/googlemock/CMakeFiles/gmock.dir/depend.make create mode 100644 Hw4/cmake-build-debug/googletest-build/googlemock/CMakeFiles/gmock.dir/flags.make create mode 100644 Hw4/cmake-build-debug/googletest-build/googlemock/CMakeFiles/gmock.dir/link.txt create mode 100644 Hw4/cmake-build-debug/googletest-build/googlemock/CMakeFiles/gmock.dir/progress.make create mode 100644 Hw4/cmake-build-debug/googletest-build/googlemock/CMakeFiles/gmock_main.dir/DependInfo.cmake create mode 100644 Hw4/cmake-build-debug/googletest-build/googlemock/CMakeFiles/gmock_main.dir/build.make create mode 100644 Hw4/cmake-build-debug/googletest-build/googlemock/CMakeFiles/gmock_main.dir/cmake_clean.cmake create mode 100644 Hw4/cmake-build-debug/googletest-build/googlemock/CMakeFiles/gmock_main.dir/cmake_clean_target.cmake create mode 100644 Hw4/cmake-build-debug/googletest-build/googlemock/CMakeFiles/gmock_main.dir/depend.make create mode 100644 Hw4/cmake-build-debug/googletest-build/googlemock/CMakeFiles/gmock_main.dir/flags.make create mode 100644 Hw4/cmake-build-debug/googletest-build/googlemock/CMakeFiles/gmock_main.dir/link.txt create mode 100644 Hw4/cmake-build-debug/googletest-build/googlemock/CMakeFiles/gmock_main.dir/progress.make create mode 100644 Hw4/cmake-build-debug/googletest-build/googlemock/CMakeFiles/progress.marks create mode 100644 Hw4/cmake-build-debug/googletest-build/googlemock/CTestTestfile.cmake create mode 100644 Hw4/cmake-build-debug/googletest-build/googlemock/Makefile create mode 100644 Hw4/cmake-build-debug/googletest-build/googlemock/cmake_install.cmake create mode 100644 Hw4/cmake-build-debug/googletest-build/googlemock/gmock.cbp create mode 100644 Hw4/cmake-build-debug/googletest-build/googletest-distribution.cbp create mode 100644 Hw4/cmake-build-debug/googletest-build/googletest/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 Hw4/cmake-build-debug/googletest-build/googletest/CMakeFiles/Export/lib/cmake/GTest/GTestTargets-debug.cmake create mode 100644 Hw4/cmake-build-debug/googletest-build/googletest/CMakeFiles/Export/lib/cmake/GTest/GTestTargets.cmake create mode 100644 Hw4/cmake-build-debug/googletest-build/googletest/CMakeFiles/gtest.dir/CXX.includecache create mode 100644 Hw4/cmake-build-debug/googletest-build/googletest/CMakeFiles/gtest.dir/DependInfo.cmake create mode 100644 Hw4/cmake-build-debug/googletest-build/googletest/CMakeFiles/gtest.dir/build.make create mode 100644 Hw4/cmake-build-debug/googletest-build/googletest/CMakeFiles/gtest.dir/cmake_clean.cmake create mode 100644 Hw4/cmake-build-debug/googletest-build/googletest/CMakeFiles/gtest.dir/cmake_clean_target.cmake create mode 100644 Hw4/cmake-build-debug/googletest-build/googletest/CMakeFiles/gtest.dir/depend.internal create mode 100644 Hw4/cmake-build-debug/googletest-build/googletest/CMakeFiles/gtest.dir/depend.make create mode 100644 Hw4/cmake-build-debug/googletest-build/googletest/CMakeFiles/gtest.dir/flags.make create mode 100644 Hw4/cmake-build-debug/googletest-build/googletest/CMakeFiles/gtest.dir/link.txt create mode 100644 Hw4/cmake-build-debug/googletest-build/googletest/CMakeFiles/gtest.dir/progress.make create mode 100644 Hw4/cmake-build-debug/googletest-build/googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o create mode 100644 Hw4/cmake-build-debug/googletest-build/googletest/CMakeFiles/gtest_main.dir/CXX.includecache create mode 100644 Hw4/cmake-build-debug/googletest-build/googletest/CMakeFiles/gtest_main.dir/DependInfo.cmake create mode 100644 Hw4/cmake-build-debug/googletest-build/googletest/CMakeFiles/gtest_main.dir/build.make create mode 100644 Hw4/cmake-build-debug/googletest-build/googletest/CMakeFiles/gtest_main.dir/cmake_clean.cmake create mode 100644 Hw4/cmake-build-debug/googletest-build/googletest/CMakeFiles/gtest_main.dir/cmake_clean_target.cmake create mode 100644 Hw4/cmake-build-debug/googletest-build/googletest/CMakeFiles/gtest_main.dir/depend.internal create mode 100644 Hw4/cmake-build-debug/googletest-build/googletest/CMakeFiles/gtest_main.dir/depend.make create mode 100644 Hw4/cmake-build-debug/googletest-build/googletest/CMakeFiles/gtest_main.dir/flags.make create mode 100644 Hw4/cmake-build-debug/googletest-build/googletest/CMakeFiles/gtest_main.dir/link.txt create mode 100644 Hw4/cmake-build-debug/googletest-build/googletest/CMakeFiles/gtest_main.dir/progress.make create mode 100644 Hw4/cmake-build-debug/googletest-build/googletest/CMakeFiles/gtest_main.dir/src/gtest_main.cc.o create mode 100644 Hw4/cmake-build-debug/googletest-build/googletest/CMakeFiles/progress.marks create mode 100644 Hw4/cmake-build-debug/googletest-build/googletest/CTestTestfile.cmake create mode 100644 Hw4/cmake-build-debug/googletest-build/googletest/Makefile create mode 100644 Hw4/cmake-build-debug/googletest-build/googletest/cmake_install.cmake create mode 100644 Hw4/cmake-build-debug/googletest-build/googletest/generated/GTestConfig.cmake create mode 100644 Hw4/cmake-build-debug/googletest-build/googletest/generated/GTestConfigVersion.cmake create mode 100644 Hw4/cmake-build-debug/googletest-build/googletest/generated/gmock.pc create mode 100644 Hw4/cmake-build-debug/googletest-build/googletest/generated/gmock_main.pc create mode 100644 Hw4/cmake-build-debug/googletest-build/googletest/generated/gtest.pc create mode 100644 Hw4/cmake-build-debug/googletest-build/googletest/generated/gtest_main.pc create mode 100644 Hw4/cmake-build-debug/googletest-build/googletest/gtest.cbp create mode 100644 Hw4/cmake-build-debug/googletest-download/CMakeCache.txt create mode 100644 Hw4/cmake-build-debug/googletest-download/CMakeFiles/3.14.5/CMakeSystem.cmake create mode 100644 Hw4/cmake-build-debug/googletest-download/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 Hw4/cmake-build-debug/googletest-download/CMakeFiles/CMakeOutput.log create mode 100644 Hw4/cmake-build-debug/googletest-download/CMakeFiles/CMakeRuleHashes.txt create mode 100644 Hw4/cmake-build-debug/googletest-download/CMakeFiles/Makefile.cmake create mode 100644 Hw4/cmake-build-debug/googletest-download/CMakeFiles/Makefile2 create mode 100644 Hw4/cmake-build-debug/googletest-download/CMakeFiles/TargetDirectories.txt create mode 100644 Hw4/cmake-build-debug/googletest-download/CMakeFiles/cmake.check_cache create mode 100644 Hw4/cmake-build-debug/googletest-download/CMakeFiles/googletest-complete create mode 100644 Hw4/cmake-build-debug/googletest-download/CMakeFiles/googletest.dir/DependInfo.cmake create mode 100644 Hw4/cmake-build-debug/googletest-download/CMakeFiles/googletest.dir/Labels.json create mode 100644 Hw4/cmake-build-debug/googletest-download/CMakeFiles/googletest.dir/Labels.txt create mode 100644 Hw4/cmake-build-debug/googletest-download/CMakeFiles/googletest.dir/build.make create mode 100644 Hw4/cmake-build-debug/googletest-download/CMakeFiles/googletest.dir/cmake_clean.cmake create mode 100644 Hw4/cmake-build-debug/googletest-download/CMakeFiles/googletest.dir/depend.internal create mode 100644 Hw4/cmake-build-debug/googletest-download/CMakeFiles/googletest.dir/depend.make create mode 100644 Hw4/cmake-build-debug/googletest-download/CMakeFiles/googletest.dir/progress.make create mode 100644 Hw4/cmake-build-debug/googletest-download/CMakeFiles/progress.marks create mode 100755 Hw4/cmake-build-debug/googletest-download/CMakeLists.txt create mode 100644 Hw4/cmake-build-debug/googletest-download/Makefile create mode 100644 Hw4/cmake-build-debug/googletest-download/cmake_install.cmake create mode 100644 Hw4/cmake-build-debug/googletest-download/googletest-prefix/src/googletest-stamp/googletest-build create mode 100644 Hw4/cmake-build-debug/googletest-download/googletest-prefix/src/googletest-stamp/googletest-configure create mode 100644 Hw4/cmake-build-debug/googletest-download/googletest-prefix/src/googletest-stamp/googletest-done create mode 100644 Hw4/cmake-build-debug/googletest-download/googletest-prefix/src/googletest-stamp/googletest-download create mode 100644 Hw4/cmake-build-debug/googletest-download/googletest-prefix/src/googletest-stamp/googletest-gitclone-lastrun.txt create mode 100644 Hw4/cmake-build-debug/googletest-download/googletest-prefix/src/googletest-stamp/googletest-gitinfo.txt create mode 100644 Hw4/cmake-build-debug/googletest-download/googletest-prefix/src/googletest-stamp/googletest-install create mode 100644 Hw4/cmake-build-debug/googletest-download/googletest-prefix/src/googletest-stamp/googletest-mkdir create mode 100644 Hw4/cmake-build-debug/googletest-download/googletest-prefix/src/googletest-stamp/googletest-patch create mode 100644 Hw4/cmake-build-debug/googletest-download/googletest-prefix/src/googletest-stamp/googletest-test create mode 100644 Hw4/cmake-build-debug/googletest-download/googletest-prefix/tmp/googletest-cfgcmd.txt create mode 100644 Hw4/cmake-build-debug/googletest-download/googletest-prefix/tmp/googletest-cfgcmd.txt.in create mode 100644 Hw4/cmake-build-debug/googletest-download/googletest-prefix/tmp/googletest-gitclone.cmake create mode 100644 Hw4/cmake-build-debug/googletest-download/googletest-prefix/tmp/googletest-gitupdate.cmake create mode 160000 Hw4/cmake-build-debug/googletest-src create mode 100644 Hw4/cmake-build-debug/lib/libgtest_maind.a create mode 100644 Hw4/cmake-build-debug/lib/libgtestd.a diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..ee5aa82 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "Hw4/Hw4/cmake-build-debug/googletest-src"] + path = Hw4/Hw4/cmake-build-debug/googletest-src + url = https://github.com/google/googletest.git diff --git a/Hw4/.idea/.name b/Hw4/.idea/.name new file mode 100644 index 0000000..c9194b8 --- /dev/null +++ b/Hw4/.idea/.name @@ -0,0 +1 @@ +hw4 \ No newline at end of file diff --git a/Hw4/CMakeLists.txt b/Hw4/CMakeLists.txt index c017f83..b095f9d 100644 --- a/Hw4/CMakeLists.txt +++ b/Hw4/CMakeLists.txt @@ -1,6 +1,93 @@ cmake_minimum_required(VERSION 3.14) -project(Hw4) +project(hw4) set(CMAKE_CXX_STANDARD 17) -add_executable(Hw4 main.cpp sortutils.cpp sortutils.hpp) \ No newline at end of file +# +# Manually specifying all the source files. +# +set(HEADER_FILES + sortutils.hpp) +set(SOURCE_FILES + sortutils.cpp) +set(UNIT_TEST_FILES + TestPerformance.cpp) + +add_executable(ArrayPerformance ${HEADER_FILES} ${SOURCE_FILES} main.cpp) +add_executable(UnitTestRunner ${HEADER_FILES} ${SOURCE_FILES} ${UNIT_TEST_FILES}) + +# +# We want the C++ 17 standard for our project +# +set_property(TARGET ArrayPerformance PROPERTY CXX_STANDARD 17) +set_property(TARGET UnitTestRunner PROPERTY CXX_STANDARD 17) + +if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") + target_compile_options(ArrayPerformance PRIVATE /W4 /permissive-) + target_compile_options(UnitTestRunner PRIVATE /W4 /permissive-) + set_target_properties(UnitTestRunner PROPERTIES LINK_FLAGS "/STACK:10000000") +elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") + target_compile_options(ArrayPerformance PRIVATE -Wall -Wextra -pedantic -Wl,--stack,10000000 -O3) + target_compile_options(UnitTestRunner PRIVATE -Wall -Wextra -pedantic -Wl,--stack,10000000 -O3) +endif() +# +# Prepare a pre-build step to run clang-format over all the [ch]pp source files. +# Start by finding the location of the clang-format executable. +# +find_program(CLANG_FORMAT "clang-format") +if (CLANG_FORMAT) + # + # Need to take the simple source file locations used for the project and get their full + # file system locations for use in putting together the clang-format command line + # + unset(SOURCE_FILES_PATHS) + foreach(SOURCE_FILE ${HEADER_FILES} ${SOURCE_FILES} ${UNIT_TEST_FILES} main.cpp) + get_source_file_property(WHERE ${SOURCE_FILE} LOCATION) + set(SOURCE_FILES_PATHS ${SOURCE_FILES_PATHS} ${WHERE}) + endforeach() + + + # + # This creates the clang-format target/command + # + add_custom_target( + ClangFormat + COMMAND ${CLANG_FORMAT} + -i + -style=file + ${SOURCE_FILES_PATHS} + ) + # + # This makes the clang-format target a dependency of the main GoogleTestIntro project + # + add_dependencies(ArrayPerformance ClangFormat) +else() + message("Unable to find clang-format") +endif() + +configure_file(CMakeLists.txt.in googletest-download/CMakeLists.txt) +execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" . + RESULT_VARIABLE result + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/googletest-download ) +if(result) + message(FATAL_ERROR "CMake step for googletest failed: ${result}") +endif() +execute_process(COMMAND ${CMAKE_COMMAND} --build . + RESULT_VARIABLE result + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/googletest-download ) +if(result) + message(FATAL_ERROR "Build step for googletest failed: ${result}") +endif() + +# Prevent overriding the parent project's compiler/linker +# settings on Windows +set(gtest_force_shared_crt ON CACHE BOOL "" FORCE) + +# Add googletest directly to our build. This defines +# the gtest and gtest_main targets. +add_subdirectory(${CMAKE_CURRENT_BINARY_DIR}/googletest-src + ${CMAKE_CURRENT_BINARY_DIR}/googletest-build + EXCLUDE_FROM_ALL) + +# Now simply link against gtest or gtest_main as needed. Eg +target_link_libraries(UnitTestRunner gtest_main) diff --git a/Hw4/CMakeLists.txt.in b/Hw4/CMakeLists.txt.in new file mode 100755 index 0000000..16d9939 --- /dev/null +++ b/Hw4/CMakeLists.txt.in @@ -0,0 +1,15 @@ +cmake_minimum_required(VERSION 3.10) + +project(googletest-download NONE) + +include(ExternalProject) +ExternalProject_Add(googletest + GIT_REPOSITORY https://github.com/google/googletest.git + GIT_TAG master + SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/googletest-src" + BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/googletest-build" + CONFIGURE_COMMAND "" + BUILD_COMMAND "" + INSTALL_COMMAND "" + TEST_COMMAND "" +) \ No newline at end of file diff --git a/Hw4/Hw4/cmake-build-debug/googletest-src b/Hw4/Hw4/cmake-build-debug/googletest-src new file mode 160000 index 0000000..3f5a8c6 --- /dev/null +++ b/Hw4/Hw4/cmake-build-debug/googletest-src @@ -0,0 +1 @@ +Subproject commit 3f5a8c6ee6ceea308d07def0f8430045f2edbc8e diff --git a/Hw4/_clang-format b/Hw4/_clang-format new file mode 100644 index 0000000..25743cc --- /dev/null +++ b/Hw4/_clang-format @@ -0,0 +1,13 @@ +Language: Cpp +ColumnLimit: 0 +BreakBeforeBraces : Allman +BreakConstructorInitializers: AfterColon +Cpp11BracedListStyle: true +IndentCaseLabels: true +NamespaceIndentation: All +IndentWidth: 4 +TabWidth: 4 +UseTab: Never +DerivePointerAlignment: false +PointerAlignment: Left +IncludeBlocks: Regroup \ No newline at end of file diff --git a/Hw4/cmake-build-debug/ArrayPerformance b/Hw4/cmake-build-debug/ArrayPerformance new file mode 100755 index 0000000000000000000000000000000000000000..b8a036adbce0c398a7a5ac187352f30a84ce60fc GIT binary patch literal 85996 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�#=q`$`{iS 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