diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000000000000000000000000000000000000..110ccc43cea3b21dbdecde66f3a3b3e5bef2426d --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "gtest"] + path = gtest + url = git@github.com:google/googletest.git diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000000000000000000000000000000000000..6a02fd21c96c3dd2e22599aa11b4348c4bbee7c9 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,25 @@ +language: cpp + +os: linux + +env: + - CSM_LIBRARY_PATH="$HOME/miniconda/lib" + - CSM_INCLUDE_PATH="$HOME/miniconda/include" + addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - g++-6 + +install: + - if [ "$TRAVIS_OS_NAME" == "linux" ]; then + wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh; + else + curl -o miniconda.sh https://repo.continuum.io/miniconda/Miniconda3-latest-MacOSX-x86_64.sh; + fi + - conda install -c usgs-astrogeology libcsm + +script: + - CXX=/usr/bin/g++-6 CC=/usr/bin/gcc-6 cmake . + - cmake --build . diff --git a/CMakeLists.txt b/CMakeLists.txt index 7e9b24556adfa36ddd33ab79fec5681efd0bb031..0ce01285392b8d384651f0ad0590461f698dc88c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,9 +1,12 @@ cmake_minimum_required(VERSION 3.10) project(usgscsm VERSION 0.0.1 DESCRIPTION "usgscsm library") +include(cmake/gtest.cmake) +include(GNUInstallDirs) +include(GoogleTest) + set(CMAKE_CXX_STANDARD 11) -include(GNUInstallDirs) add_library(usgscsm SHARED src/UsgsAstroFramePlugin.cpp src/UsgsAstroFrameSensorModel.cpp @@ -22,8 +25,8 @@ set_target_properties(usgscsm PROPERTIES UsgsAstroLsStateData.h ) -find_library(CSM_LIBRARY csmapi REQUIRED) -find_path(CSM_INCLUDE_DIR PATH_SUFFIXES csm NAMES csm.h) +find_library(CSM_LIBRARY csmapi REQUIRED HINTS $ENV{CSM_LIBRARY_PATH}) +find_path(CSM_INCLUDE_DIR PATH_SUFFIXES csm NAMES csm.h HINTS $ENV{CSM_INCLUDE_PATH}) target_include_directories(usgscsm PUBLIC @@ -32,12 +35,20 @@ target_include_directories(usgscsm ${CSM_INCLUDE_DIR} ) -target_link_libraries(usgscsm ${CSM_LIBRARY}) +# Setup for GoogleTest + +find_package (Threads) + +target_link_libraries(usgscsm + ${CSM_LIBRARY} + gtest ${CMAKE_THREAD_LIBS_INIT}) install(TARGETS usgscsm LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) + + include(CTest) enable_testing() diff --git a/cmake/gtest.cmake b/cmake/gtest.cmake new file mode 100644 index 0000000000000000000000000000000000000000..5534ad267be742d283e7e191541ab0b2cbc43659 --- /dev/null +++ b/cmake/gtest.cmake @@ -0,0 +1,17 @@ +set(GOOGLETEST_ROOT gtest/googletest CACHE STRING "Google Test source root") + +include_directories(SYSTEM + ${PROJECT_SOURCE_DIR}/${GOOGLETEST_ROOT} + ${PROJECT_SOURCE_DIR}/${GOOGLETEST_ROOT}/include + ) + +set(GOOGLETEST_SOURCES + ${PROJECT_SOURCE_DIR}/${GOOGLETEST_ROOT}/src/gtest-all.cc + ${PROJECT_SOURCE_DIR}/${GOOGLETEST_ROOT}/src/gtest_main.cc + ) + +foreach(_source ${GOOGLETEST_SOURCES}) + set_source_files_properties(${_source} PROPERTIES GENERATED 1) +endforeach() + +add_library(gtest ${GOOGLETEST_SOURCES}) \ No newline at end of file diff --git a/gtest b/gtest new file mode 160000 index 0000000000000000000000000000000000000000..e5e2ef7cd27cc089c1d8302a11970ef870554294 --- /dev/null +++ b/gtest @@ -0,0 +1 @@ +Subproject commit e5e2ef7cd27cc089c1d8302a11970ef870554294 diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index d4b60235ffeacd39a4a3364760e99c234b699ed1..207b959e3d0ee77156d4fa4d6d9a90e47bb2a080 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,9 +1,5 @@ cmake_minimum_required(VERSION 3.10) -# Locate GTest -find_package(GTest REQUIRED) -include_directories(${GTEST_INCLUDE_DIRS}) - # Link runTests with what we want to test and the GTest and pthread library add_executable(runTests TestyMcTestFace.cpp) target_link_libraries(runTests usgscsm ${GTEST_LIBRARIES} ${GTEST_MAIN_LIBRARIES} pthread)