diff --git a/CMakeLists.txt b/CMakeLists.txt index 160b4e4..5606f52 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,13 @@ cmake_minimum_required(VERSION 3.3) project(C/C++) +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14") +SET(CMAKE_BUILD_TYPE Debug) + +# These are the corresponding output paths +set (EXECUTABLE_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/bin) +set (LIBRARY_OUTPUT_PATH ${EXECUTABLE_OUTPUT_PATH}) + # add a target to generate API documentation with Doxygen find_package(Doxygen) if(DOXYGEN_FOUND) @@ -12,11 +19,41 @@ if(DOXYGEN_FOUND) ) endif(DOXYGEN_FOUND) -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14") -SET(CMAKE_BUILD_TYPE Debug) +# Download and unpack googletest at configure time +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() -# These are the corresponding output paths -set (EXECUTABLE_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/bin) -set (LIBRARY_OUTPUT_PATH ${EXECUTABLE_OUTPUT_PATH}) +# 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) + +# The gtest/gtest_main targets carry header search path +# dependencies automatically when using CMake 2.8.11 or +# later. Otherwise we have to add them here ourselves. +if (CMAKE_VERSION VERSION_LESS 2.8.11) + include_directories("${gtest_SOURCE_DIR}/include") +endif() + +# Now simply link against gtest or gtest_main as needed. Eg +#add_executable(example example.cpp) +#target_link_libraries(example gtest_main) +#add_test(NAME example_test COMMAND example) add_subdirectory(src) \ No newline at end of file diff --git a/CMakeLists.txt.in b/CMakeLists.txt.in new file mode 100644 index 0000000..d3c1d55 --- /dev/null +++ b/CMakeLists.txt.in @@ -0,0 +1,15 @@ +cmake_minimum_required(VERSION 2.8.2) + +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/src/07_STD/CMakeLists.txt b/src/07_STD/CMakeLists.txt index 3dc8a35..659f9c3 100644 --- a/src/07_STD/CMakeLists.txt +++ b/src/07_STD/CMakeLists.txt @@ -1,2 +1,4 @@ add_executable(07_STD_MP MP/grundgeruest.cpp MP/BinaryOctet.cpp MP/BinaryOctet.h) -add_executable(07_STD_Testat Testat/grundgeruest.cpp Testat/BinaryOctet.h Testat/BinaryOctet.cpp) \ No newline at end of file +add_executable(07_STD_Testat Testat/grundgeruest.cpp Testat/BinaryOctet.h Testat/BinaryOctet.cpp) +target_link_libraries(07_STD_Testat gtest_main) +add_test(NAME 07_STD_Testat COMMAND InsertBinaryOctet) \ No newline at end of file diff --git a/src/07_STD/Testat/grundgeruest.cpp b/src/07_STD/Testat/grundgeruest.cpp index 2fe11ca..7888893 100644 --- a/src/07_STD/Testat/grundgeruest.cpp +++ b/src/07_STD/Testat/grundgeruest.cpp @@ -5,6 +5,7 @@ #include #include #include +#include #include "BinaryOctet.h" // for println(); @@ -60,3 +61,7 @@ int main() { std::cout << binaryOctet << std::endl; } } + +TEST(STD_Testat, InsertBinaryOctet) { + ASSERT_EQ(42, 42); +}