From 12938474d9693b611b78dae11a1103cd0aa4b2bb Mon Sep 17 00:00:00 2001 From: jlaura <jlaura@usgs.gov> Date: Thu, 2 Aug 2018 08:27:20 -0700 Subject: [PATCH] Adds travis for linux (#53) * Adds travis for linux * Adds libcsm dep. * Fixes a bad merge on find_path * adds GTest to the repo for CI * Removed commented code from tests/CMakeList.txt --- .gitmodules | 3 +++ .travis.yml | 25 +++++++++++++++++++++++++ CMakeLists.txt | 19 +++++++++++++++---- cmake/gtest.cmake | 17 +++++++++++++++++ gtest | 1 + tests/CMakeLists.txt | 4 ---- 6 files changed, 61 insertions(+), 8 deletions(-) create mode 100644 .gitmodules create mode 100644 .travis.yml create mode 100644 cmake/gtest.cmake create mode 160000 gtest diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..110ccc4 --- /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 0000000..6a02fd2 --- /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 7e9b245..0ce0128 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 0000000..5534ad2 --- /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 0000000..e5e2ef7 --- /dev/null +++ b/gtest @@ -0,0 +1 @@ +Subproject commit e5e2ef7cd27cc089c1d8302a11970ef870554294 diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index d4b6023..207b959 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) -- GitLab