#------------------------------------------------------------------------------ # # This group of libraries derives for an MBARI software repository that supports # Terrain Relative Navigation (TRN) software. Aside from this CMakeLists.txt file # and the parallel Autotools build system files Makefile.am and Makefile.in, # all three written to enable building these libraries as part of MB-System, the # directories and source files below are synchronized with the MBARI libtrnav # repository. # The libraries are: # udpms # trnxplug # trnlcm # udpms # The application(s) are: # trnxpp # message("In src/mbtrnav/opt/rov") #------------------------------------------------------------------------------ find_package(NetCDF REQUIRED) find_package(lcm REQUIRED) find_package(LibPROJ REQUIRED) include(${LCM_USE_FILE}) message("-- LCM found! (please ignore any warnings about CMake version deprecation...)") find_package(Java) if(JAVA_FOUND) include(UseJava) set(java_args JAVA_SOURCES java_sources) message("-- Java found!") endif() add_compile_definitions( HAVE_CONFIG_H _GNU_SOURCE ) #------------------------------------------------------------------------------ # generate LCM source lcm_wrap_types( C_SOURCES c_sources C_HEADERS c_install_headers CPP_HEADERS cpp_install_headers ${java_args} lcm_types/signal_t.lcm lcm_types/string_t.lcm lcm_types/nav_solution_t.lcm lcm_types/message_t.lcm lcm_types/analog_t.lcm lcm_types/digital_t.lcm lcm_types/dvl_stat_t.lcm lcm_types/pcomms_t.lcm lcm_types/parosci_stat_t.lcm lcm_types/ctd_t.lcm lcm_types/idt_t.lcm lcm_types/lcm_header_t.lcm lcm_types/rdi_pd4_t.lcm lcm_types/kearfott_t.lcm lcm_types/octans_t.lcm lcm_types/double_t.lcm lcm_types/mb1_beam_t.lcm lcm_types/trnu_estimate_t.lcm lcm_types/trn_stat_t.lcm lcm_types/trn_meas_t.lcm lcm_types/trn_pose_t.lcm lcm_types/trnupub_t.lcm lcm_types/trn_mb1_t.lcm ) # C Static libs #lcm_add_library(trnlcm C STATIC #${c_sources} #${c_install_headers} #) #target_include_directories(trnlcm INTERFACE # $) # C shared libs lcm_add_library(trnlcm C ${c_sources} ${c_install_headers}) target_include_directories(trnlcm INTERFACE $) # C++ libs lcm_add_library(trnlcm-cpp CPP ${cpp_install_headers}) target_include_directories(trnlcm-cpp INTERFACE $) lcm_install_headers(DESTINATION include ${c_install_headers} ${cpp_install_headers} ) # TRN LCM types jar if(JAVA_FOUND) add_jar(trnlcm-jar OUTPUT_NAME lcm_rovtrn INCLUDE_JARS lcm-java SOURCES ${java_sources} ) endif() # #------------------------------------------------------------------------------ # # build udpms # specify library add_library(udpms udpm_sub.c) # #------------------------------------------------------------------------------ # # build trnxplug # specify library add_library(trnxplug plug-common.cpp plug-idtlass.cpp plug-oisledx.cpp plug-dvl.cpp plug-idt.cpp plug-oisled.cpp plug-oisled2.cpp plug-lassmb.cpp plug-xmb1.cpp ) target_include_directories(trnxplug PRIVATE ${CMAKE_SOURCE_DIR}/src/mbtrnav/terrain-nav ${CMAKE_SOURCE_DIR}/src/mbtrnav/qnx-utils ${CMAKE_SOURCE_DIR}/src/mbtrnav/newmat ${CMAKE_SOURCE_DIR}/src/mbtrnav/utils ${CMAKE_SOURCE_DIR}/src/mbtrnav/trnw ${CMAKE_SOURCE_DIR}/src/mbtrnav/opt/rov ${CMAKE_BINARY_DIR}/src/mbtrnav/opt/rov ${NetCDF_INCLUDE_DIRS} ${LibPROJ_INCLUDE_DIRS} ) target_link_libraries(trnxplug PRIVATE newmat geolib geocon trnw qnx mb1 tnav udpms trncli NetCDF::NetCDF lcm ) # #------------------------------------------------------------------------------ # # build trnxpp (TRN LCM pre-processor) # specify build target add_executable(trnxpp trnxpp_app.cpp ) target_include_directories(trnxpp PRIVATE ${CMAKE_SOURCE_DIR}/src/mbtrnav/terrain-nav ${CMAKE_SOURCE_DIR}/src/mbtrnav/qnx-utils ${CMAKE_SOURCE_DIR}/src/mbtrnav/newmat ${CMAKE_SOURCE_DIR}/src/mbtrnav/utils ${CMAKE_SOURCE_DIR}/src/mbtrnav/trnw ${CMAKE_SOURCE_DIR}/src/mbtrnav/opt/rov ${CMAKE_BINARY_DIR}/src/mbtrnav/opt/rov ${NetCDF_INCLUDE_DIRS} ${LibPROJ_INCLUDE_DIRS} ) target_link_libraries(trnxpp PRIVATE lcm stdc++ mb1 trncli tnav newmat qnx m geolib udpms trnxplug NetCDF::NetCDF) # #------------------------------------------------------------------------------ # # build trnlcm-test (TRN LCM test) # specify build target #add_executable(trnlcm-test # trnlcm_test.cpp #) # #target_include_directories(trnlcm-test PRIVATE # ${CMAKE_SOURCE_DIR}/src/mbtrnav/terrain-nav # ${CMAKE_SOURCE_DIR}/src/mbtrnav/qnx-utils # ${CMAKE_SOURCE_DIR}/src/mbtrnav/newmat # ${CMAKE_SOURCE_DIR}/src/mbtrnav/utils # ${CMAKE_SOURCE_DIR}/src/mbtrnav/trnw # ${CMAKE_SOURCE_DIR}/src/mbtrnav/opt/rov # ${NetCDF_INCLUDE_DIRS} #) # may need rt (librt) in Linux #target_link_libraries(trnlcm-test PRIVATE lcm stdc++ pthread) # #------------------------------------------------------------------------------ # # build fv-test (flag variable test) # specify build target #add_executable(fv-test # flag_var_test.cpp #) # #target_include_directories(fv-test PRIVATE # ${CMAKE_SOURCE_DIR}/src/mbtrnav/terrain-nav # ${CMAKE_SOURCE_DIR}/src/mbtrnav/qnx-utils # ${CMAKE_SOURCE_DIR}/src/mbtrnav/newmat # ${CMAKE_SOURCE_DIR}/src/mbtrnav/utils # ${CMAKE_SOURCE_DIR}/src/mbtrnav/trnw # ${CMAKE_SOURCE_DIR}/src/mbtrnav/opt/rov # ${NetCDF_INCLUDE_DIRS} #) # may need rt (librt) in Linux #target_link_libraries(fv-test PRIVATE stdc++) #------------------------------------------------------------------------------ # install it all # install(TARGETS trnlcm trnlcm-cpp udpms trnxplug trnxpp # trnlcm-test # fv-test EXPORT ${PROJECT_NAME}Targets RUNTIME DESTINATION bin LIBRARY DESTINATION lib${LIB_SUFFIX} ARCHIVE DESTINATION lib${LIB_SUFFIX} INCLUDES DESTINATION include ) if(JAVA_FOUND) install_jar(trnlcm-jar share/java) endif() #------------------------------------------------------------------------------