diff --git a/CMakeLists.txt b/CMakeLists.txt index 3892399b43771edd5c7d5cbd7ddde5724aba1179..d24dbbd7f57745ed7f96755391238b068b07352c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,7 +12,7 @@ PROJECT(gnss_utils) SET(EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/bin) SET(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/lib) -set(INCLUDE_INSTALL_DIR include/iri-algorithms) +set(INCLUDE_INSTALL_DIR include) set(LIB_INSTALL_DIR lib/) IF (NOT CMAKE_BUILD_TYPE) @@ -25,17 +25,11 @@ SET(CMAKE_CXX_FLAGS_RELEASE "-O3 -D_REENTRANT") #Set compiler according C++11 support include(CheckCXXCompilerFlag) CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11) -CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X) if(COMPILER_SUPPORTS_CXX11) - message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has C++11 support.") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") - #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c99") -elseif(COMPILER_SUPPORTS_CXX0X) - message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has C++0x support.") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x") - #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c99") + message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has C++11 support.") + set(CMAKE_CXX_STANDARD 11) else() - message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.") + message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.") endif() set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive") @@ -55,7 +49,7 @@ if(BUILD_TESTS) endif() # Define the directory where will be the configured config.h -SET(GNSS_UTILS_CONFIG_DIR ${PROJECT_BINARY_DIR}/conf/gnss_utils/internal) +SET(GNSS_UTILS_CONFIG_DIR ${PROJECT_BINARY_DIR}/conf/${PROJECT_NAME}/internal) # Create the specified output directory if it does not exist. IF(NOT EXISTS "${GNSS_UTILS_CONFIG_DIR}") @@ -68,9 +62,6 @@ IF(EXISTS "${GNSS_UTILS_CONFIG_DIR}" AND NOT IS_DIRECTORY "${GNSS_UTILS_CONFIG_D ENDIF() # Configure config.h configure_file(${CMAKE_CURRENT_SOURCE_DIR}/internal/config.h.in "${GNSS_UTILS_CONFIG_DIR}/config.h") -message("GNSS_UTILS CONFIG ${GNSS_UTILS_CONFIG_DIR}/config.h") -message("CONFIG DIRECTORY ${PROJECT_BINARY_DIR}") -include_directories("${PROJECT_BINARY_DIR}/conf") # rtklib path SET(RTKLIB_SRC_DIR deps/RTKLIB/src) @@ -126,10 +117,10 @@ FIND_PACKAGE(Eigen3 3.3 REQUIRED CONFIG) INCLUDE_DIRECTORIES(BEFORE include ${RTKLIB_SRC_DIR}) # create the shared library -ADD_LIBRARY(gnss_utils SHARED ${SOURCES} ${RTKLIB_SRC}) +ADD_LIBRARY(${PROJECT_NAME} SHARED ${SOURCES} ${RTKLIB_SRC}) # Link this library wrt. its dependencies -TARGET_LINK_LIBRARIES(gnss_utils Eigen3::Eigen) +TARGET_LINK_LIBRARIES(${PROJECT_NAME} Eigen3::Eigen) # Examples ADD_SUBDIRECTORY(src/examples) @@ -163,18 +154,18 @@ install( ${LIB_INSTALL_DIR}/${PROJECT_NAME}/cmake ) -# Specifies include directories to use when compiling the plugin target -# This way, include_directories does not need to be called in plugins depending on this one -target_include_directories(${PROJECT_NAME} INTERFACE +target_include_directories(${PROJECT_NAME} PUBLIC + $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> + $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/conf> $<INSTALL_INTERFACE:${INCLUDE_INSTALL_DIR}> ) -INSTALL(DIRECTORY include/gnss_utils DESTINATION ${INCLUDE_INSTALL_DIR}) +INSTALL(DIRECTORY include/${PROJECT_NAME} DESTINATION ${INCLUDE_INSTALL_DIR}) -INSTALL(FILES ${RTKLIB_SRC_DIR}/rtklib.h DESTINATION ${INCLUDE_INSTALL_DIR}/gnss_utils) +INSTALL(FILES ${RTKLIB_SRC_DIR}/rtklib.h DESTINATION ${INCLUDE_INSTALL_DIR}/${PROJECT_NAME}) INSTALL(FILES "${GNSS_UTILS_CONFIG_DIR}/config.h" - DESTINATION ${INCLUDE_INSTALL_DIR}/gnss_utils/internal) + DESTINATION ${INCLUDE_INSTALL_DIR}/${PROJECT_NAME}/internal) ############### diff --git a/Findgnss_utils.cmake b/Findgnss_utils.cmake deleted file mode 100644 index b05d20c1734eeee0fcf052bb12fced13b67f1b06..0000000000000000000000000000000000000000 --- a/Findgnss_utils.cmake +++ /dev/null @@ -1,37 +0,0 @@ -FIND_PATH( - gnss_utils_INCLUDE_DIRS - NAMES gnss_utils/gnss_utils.h - PATHS /usr/local/include/iri-algorithms) -IF(gnss_utils_INCLUDE_DIRS) - MESSAGE("Found gnss_utils include dirs: ${gnss_utils_INCLUDE_DIRS}") -ELSE(gnss_utils_INCLUDE_DIRS) - MESSAGE("Couldn't find gnss_utils include dirs") -ENDIF(gnss_utils_INCLUDE_DIRS) - -FIND_LIBRARY( - gnss_utils_LIBRARIES - NAMES libgnss_utils.so libgnss_utils.dylib - PATHS /usr/local/lib/iri-algorithms) -IF(gnss_utils_LIBRARIES) - MESSAGE("Found gnss_utils lib: ${gnss_utils_LIBRARIES}") -ELSE(gnss_utils_LIBRARIES) - MESSAGE("Couldn't find gnss_utils lib") -ENDIF(gnss_utils_LIBRARIES) - -IF (gnss_utils_INCLUDE_DIRS AND gnss_utils_LIBRARIES) - SET(gnss_utils_FOUND TRUE) - SET(gnss_utils_INCLUDE_DIR ${gnss_utils_INCLUDE_DIRS}) - SET(gnss_utils_LIBRARY ${gnss_utils_LIBRARIES}) - ELSE(gnss_utils_INCLUDE_DIRS AND gnss_utils_LIBRARIES) - set(gnss_utils_FOUND FALSE) -ENDIF (gnss_utils_INCLUDE_DIRS AND gnss_utils_LIBRARIES) - -IF (gnss_utils_FOUND) - IF (NOT gnss_utils_FIND_QUIETLY) - MESSAGE(STATUS "Found gnss_utils: ${gnss_utils_LIBRARIES}") - ENDIF (NOT gnss_utils_FIND_QUIETLY) -ELSE (gnss_utils_FOUND) - IF (gnss_utils_FIND_REQUIRED) - MESSAGE(FATAL_ERROR "Could not find gnss_utils") - ENDIF (gnss_utils_FIND_REQUIRED) -ENDIF (gnss_utils_FOUND) diff --git a/README.md b/README.md index 8db7c470a0e95d47e2f01e033e8636ba77959a91..0e691347a3ccf050503b83769e59143e352ccbdd 100644 --- a/README.md +++ b/README.md @@ -2,25 +2,48 @@ Clone the repository in your chosen directory. In a new terminal: -``` +```bash cd <your/path> git clone <repo-link> ``` Clone the RTKLIB lib as a sub-module: -``` +```bash git submodule update --init ``` Create a directory to build all the source files: -``` -$ mkdir build -$ cd build +```bash +mkdir build +cd build ``` Compile the source files: +```bash +cmake .. +make +``` + +Install the library: + +```bash +make install +``` + +## Installation in local folder + +With the previous steps, the library will be stored in `CMAKE_PREFIX_PATH` that usually is `/usr/local`. If you want to install the library in a local folder (avoiding sudo permissions), you can add these lines in your `.bashrc` file: + +```bash +export LOCAL_INSTALL_PREFIX=/your/local/installation/path # To be substituted by your desired installation path +export LD_LIBRARY_PATH=$LOCAL_INSTALL_PREFIX/lib:$LD_LIBRARY_PATH +export CMAKE_PREFIX_PATH=$LOCAL_INSTALL_PREFIX:$CMAKE_PREFIX_PATH +``` + +And compile with: +```bash +cmake .. -DCMAKE_INSTALL_PREFIX=$LOCAL_INSTALL_PREFIX +make +make install ``` -$ cmake .. -$ make -``` \ No newline at end of file