Tutoriel de compilation Ubuntu Gurobi C++ + configuration CMakeLists

1. Téléchargez et installez

1.1 Télécharger le code source de Gurobi

  Téléchargez le package compressé https://packages.gurobi.com/9.5/gurobi9.5.0_linux64.tar.gzet copiez directement le package compressé dans le navigateur pour le télécharger. Ou allez sur le site officiel pour télécharger. Cliquez sur ce 64-bit Linuxtéléchargement.
Veuillez ajouter une description de l'image
Après le téléchargement, décompressez et copiez le fichier dans /opt/le répertoire

tar xvfz gurobi9.5.0_linux64.tar.gz
sudo cp -r gurobi9.5.0_linux64/gurobi950/ /opt/

1.2 Ajouter une licence

cd /opt/gurobi950/linux64/bin/
grbgetkey f5a6a6f0-xxxx-xxxx-xxxx-xxxxxxxxxx

Remarque
1) La chaîne après grbgetkey est le numéro de série personnel demandé sur le site officiel de Gurobi.
2) Cela peut indiquer qu'il n'y a aucune autorisation, mais il peut être exécuté.chmod +x grbgetkey

1.2 Chemin de configuration

vim ~/.bashrc

Ajoutez les informations suivantes à .bashrc

export GUROBI_HOME="/opt/gurobi950/linux64"
export PATH="${PATH}:${GUROBI_HOME}/bin"
export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${GUROBI_HOME}/lib"
export GRB_LICENSE_FILE="/home/xxx/gurobi.lic"

Note
1) La dernière ligne est le chemin pour générer la licence à l'étape précédente, remplacez-la par le vôtre

1.3 Générer libgurobi_c++.a

cd /opt/gurobi950/linux64/src/build/
sudo make
sudo cp libgurobi_c++.a ../../lib/

2. Configurez CMakeLists

2.1 Ajouter un fichier .cmake

  Ajouter des fichiers dans le répertoire où se trouve CMakeListsFindGUROBI.cmake

# ------------------------------------------------------------------------------
# This file sets up Gurobi for CMake. Once done this will define
#
#   GUROBI_FOUND           - system has GUROBI
#   GUROBI_INCLUDE_DIRS    - the GUROBI include directories
#   GUROBI_LIBRARIES       - Link these to use GUROBI
#
#  In your CMakeLists file, you need to add, e.g. (modify it if necessary):
#        if (GUROBI_FOUND)
#            message(STATUS "Gurobi include dir: " ${
      
      GUROBI_INCLUDE_DIRS})
#            message(STATUS "Gurobi libraries: " ${
      
      GUROBI_LIBRARIES})
#            target_compile_definitions(${
      
      PROJECT_NAME} PUBLIC HAS_GUROBI)
#            target_include_directories(${
      
      PROJECT_NAME} PRIVATE ${
      
      GUROBI_INCLUDE_DIRS})
#            target_link_libraries(${
      
      PROJECT_NAME} PRIVATE ${
      
      GUROBI_LIBRARIES})
#        endif()
# ------------------------------------------------------------------------------


# Is it already configured?
if (NOT GUROBI_FOUND)

    # Hardcoded search paths
    set(SEARCH_PATHS_FOR_HEADERS
        "$ENV{GUROBI_HOME}/include"
        "/Library/gurobi901/mac64/include"
        "C:\\dev\\gurobi901\\win64\\include"
    )

    set(SEARCH_PATHS_FOR_LIBRARIES
        "$ENV{GUROBI_HOME}/lib"
        "/Library/gurobi901/mac64/lib"
        "C:\\dev\\gurobi901\\win64\\lib"
    )

    find_path(GUROBI_INCLUDE_DIR gurobi_c++.h
      PATHS ${
    
    SEARCH_PATHS_FOR_HEADERS}
    )


    find_library( GUROBI_C_LIBRARY
                  NAMES gurobi90 gurobi95 libgurobi
                  PATHS ${
    
    SEARCH_PATHS_FOR_LIBRARIES}
                  )

    find_library( GUROBI_CXX_LIBRARY_DEBUG
                NAMES gurobi_c++ gurobi_c++mdd2017
                PATHS ${
    
    SEARCH_PATHS_FOR_LIBRARIES}
                )

    find_library( GUROBI_CXX_LIBRARY_RELEASE
                NAMES gurobi_c++ gurobi_c++md2017
                PATHS ${
    
    SEARCH_PATHS_FOR_LIBRARIES}
                )

    # setup header file directories
    set(GUROBI_INCLUDE_DIRS ${
    
    GUROBI_INCLUDE_DIR})

    # setup libraries files
    set(GUROBI_LIBRARIES
            debug ${
    
    GUROBI_CXX_LIBRARY_DEBUG}
            optimized ${
    
    GUROBI_CXX_LIBRARY_RELEASE}
            ${
    
    GUROBI_C_LIBRARY}
            )

endif()

# Check that Gurobi was successfully found
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(GUROBI DEFAULT_MSG GUROBI_INCLUDE_DIRS)
find_package_handle_standard_args(GUROBI DEFAULT_MSG GUROBI_LIBRARIES)

# Hide variables from CMake-Gui options
mark_as_advanced(GUROBI_LIBRARIES GUROBI_INCLUDE_DIRS GUROBI_INCLUDE_DIR)

2.2 Modifier les CMakeLists

include(./FindGUROBI.cmake)
include_directories(${
    
    GUROBI_INCLUDE_DIRS})

include_directories(
  ${
    
    GUROBI_INCLUDE_DIRS}
)

add_executable(controller
  src/flocking_control.cpp 
  )
target_link_libraries(controller 
  ${
    
    catkin_LIBRARIES}
  ${
    
    GUROBI_LIBRARIES}
)

les références

  1. Tutoriel d'installation du site officiel
  2. Problème Gurobi expliqué
  3. Le projet du grand patron sur git

Supongo que te gusta

Origin blog.csdn.net/qq_16775293/article/details/122699629
Recomendado
Clasificación