diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index ffd3390d04e0cceb6bb51e6eba877d932870b220..7e2209c52900a9292198a5a436974059cdc153a4 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -1,38 +1,12 @@ # Retrieve googletest from github & compile add_subdirectory(gtest) - -# Include gtest directory. -include_directories(${GTEST_INCLUDE_DIRS}) - wolf_add_gtest(gtest_pinhole gtest_pinhole.cpp) -target_link_libraries(gtest_pinhole ${PLUGIN_NAME}) wolf_add_gtest(gtest_capture_image gtest_capture_image.cpp) -target_link_libraries(gtest_capture_image ${PLUGIN_NAME}) wolf_add_gtest(gtest_feature_point_image gtest_feature_point_image.cpp) -target_link_libraries(gtest_feature_point_image ${PLUGIN_NAME}) - wolf_add_gtest(gtest_sensor_camera gtest_sensor_camera.cpp) -target_link_libraries(gtest_sensor_camera ${PLUGIN_NAME}) - -wolf_add_gtest(gtest_processor_visual_odometry gtest_processor_visual_odometry.cpp) -target_link_libraries(gtest_processor_visual_odometry ${PLUGIN_NAME}) - -# # FactorTrifocal test -# wolf_add_gtest(gtest_factor_trifocal gtest_factor_trifocal.cpp) -# target_link_libraries(gtest_factor_trifocal ${PLUGIN_NAME}) - -# # FactorFeatureEpipolar test -# wolf_add_gtest(gtest_factor_epipolar gtest_factor_epipolar.cpp) -# target_link_libraries(gtest_factor_epipolar ${PLUGIN_NAME}) - -# # ProcessorBundleAdjustment test -# wolf_add_gtest(gtest_processor_bundle_adjustment gtest_processor_bundle_adjustment.cpp) -# target_link_libraries(gtest_processor_bundle_adjustment ${PLUGIN_NAME}) -# # FactorPixelHp test -> depends on processor_bundle_adjustment.cpp -# wolf_add_gtest(gtest_factor_pixel_hp gtest_factor_pixel_hp.cpp) -# target_link_libraries(gtest_factor_pixel_hp ${PLUGIN_NAME}) +wolf_add_gtest(gtest_processor_visual_odometry gtest_processor_visual_odometry.cpp) \ No newline at end of file diff --git a/test/gtest/CMakeLists.txt b/test/gtest/CMakeLists.txt index 559756b02472653c655c44152c452ba8767ef6f2..0fe7d7a08d4d323f4171f9a210fb547914e894c2 100644 --- a/test/gtest/CMakeLists.txt +++ b/test/gtest/CMakeLists.txt @@ -1,65 +1,80 @@ -cmake_minimum_required(VERSION 2.8.8) -project(gtest_builder C CXX) +if(${CMAKE_VERSION} VERSION_LESS "3.11.0") + message("CMake version less than 3.11.0") -# We need thread support -#find_package(Threads REQUIRED) + # Enable ExternalProject CMake module + include(ExternalProject) -# Enable ExternalProject CMake module -include(ExternalProject) + set(GTEST_FORCE_SHARED_CRT ON) + set(GTEST_DISABLE_PTHREADS OFF) -set(GTEST_FORCE_SHARED_CRT ON) -set(GTEST_DISABLE_PTHREADS OFF) + # For some reason I need to disable PTHREADS + # with g++ (Ubuntu 4.9.3-8ubuntu2~14.04) 4.9.3 + # This is a known issue for MinGW : + # https://github.com/google/shaderc/pull/174 + #if(MINGW) + # set(GTEST_DISABLE_PTHREADS ON) + #endif() -# For some reason I need to disable PTHREADS -# with g++ (Ubuntu 4.9.3-8ubuntu2~14.04) 4.9.3 -# This is a known issue for MinGW : -# https://github.com/google/shaderc/pull/174 -#if(MINGW) - set(GTEST_DISABLE_PTHREADS ON) -#endif() + # Download GoogleTest + ExternalProject_Add(googletest + GIT_REPOSITORY https://github.com/google/googletest.git + GIT_TAG v1.8.x + # TIMEOUT 1 # We'll try this + CMAKE_ARGS -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG:PATH=DebugLibs + -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE:PATH=ReleaseLibs + -DCMAKE_CXX_FLAGS=${MSVC_COMPILER_DEFS} + -Dgtest_force_shared_crt=${GTEST_FORCE_SHARED_CRT} + -Dgtest_disable_pthreads=${GTEST_DISABLE_PTHREADS} + -DBUILD_GTEST=ON + PREFIX "${CMAKE_CURRENT_BINARY_DIR}" + # Disable install step + INSTALL_COMMAND "" + UPDATE_DISCONNECTED 1 # 1: do not update googletest; 0: update googletest via github + ) -# Download GoogleTest -ExternalProject_Add(googletest - GIT_REPOSITORY https://github.com/google/googletest.git - GIT_TAG v1.8.x - # TIMEOUT 1 # We'll try this - CMAKE_ARGS -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG:PATH=DebugLibs - -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE:PATH=ReleaseLibs - -DCMAKE_CXX_FLAGS=${MSVC_COMPILER_DEFS} - -Dgtest_force_shared_crt=${GTEST_FORCE_SHARED_CRT} - -Dgtest_disable_pthreads=${GTEST_DISABLE_PTHREADS} - -DBUILD_GTEST=ON - PREFIX "${CMAKE_CURRENT_BINARY_DIR}" - # Disable install step - INSTALL_COMMAND "" - UPDATE_DISCONNECTED 1 # 1: do not update googletest; 0: update googletest via github -) + # Get GTest source and binary directories from CMake project -# Get GTest source and binary directories from CMake project + # Specify include dir + ExternalProject_Get_Property(googletest source_dir) + set(GTEST_INCLUDE_DIRS ${source_dir}/googletest/include PARENT_SCOPE) -# Specify include dir -ExternalProject_Get_Property(googletest source_dir) -set(GTEST_INCLUDE_DIRS ${source_dir}/googletest/include PARENT_SCOPE) + # Specify MainTest's link libraries + ExternalProject_Get_Property(googletest binary_dir) + set(GTEST_LIBS_DIR ${binary_dir}/googlemock/gtest PARENT_SCOPE) -# Specify MainTest's link libraries -ExternalProject_Get_Property(googletest binary_dir) -set(GTEST_LIBS_DIR ${binary_dir}/googlemock/gtest PARENT_SCOPE) + # Create a libgtest target to be used as a dependency by test programs + add_library(libgtest IMPORTED STATIC GLOBAL) + add_dependencies(libgtest googletest) -# Create a libgtest target to be used as a dependency by test programs -add_library(libgtest IMPORTED STATIC GLOBAL) -add_dependencies(libgtest googletest) + # Set libgtest properties + set_target_properties(libgtest PROPERTIES + "IMPORTED_LOCATION" "${binary_dir}/googlemock/gtest/libgtest.a" + "IMPORTED_LINK_INTERFACE_LIBRARIES" "${CMAKE_THREAD_LIBS_INIT}" + ) -# Set libgtest properties -set_target_properties(libgtest PROPERTIES - "IMPORTED_LOCATION" "${binary_dir}/googlemock/gtest/libgtest.a" - "IMPORTED_LINK_INTERFACE_LIBRARIES" "${CMAKE_THREAD_LIBS_INIT}" -) +else() + message("CMake version equal or greater than 3.11.0") + + include(FetchContent) + + FetchContent_Declare( + googletest + GIT_REPOSITORY https://github.com/google/googletest.git + GIT_TAG main) + + FetchContent_MakeAvailable(googletest) + +endif() + function(wolf_add_gtest target) add_executable(${target} ${ARGN}) - add_dependencies(${target} libgtest) - target_link_libraries(${target} libgtest) - - #WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/bin + if(${CMAKE_VERSION} VERSION_LESS "3.11.0") + add_dependencies(${target} libgtest) + target_link_libraries(${target} libgtest ${PLUGIN_NAME}) + target_include_directories(${target} PUBLIC ${GTEST_INCLUDE_DIRS}) + else() + target_link_libraries(${target} PUBLIC gtest_main ${PLUGIN_NAME}) + endif() add_test(NAME ${target} COMMAND ${target}) endfunction()