Linux下配置Gurobi求解器的C++接口

Linux下配置Gurobi求解器的C++接口

Gurobi求解器的安装方法可以参考上一篇文章:https://blog.csdn.net/CUGB_NICET/article/details/126701756

1. 生成动态链接库

生成libgurobi_c++.a并将它拷贝到lib文件夹下:

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

此处XXX替换成你的gurobi版本号

2. 配置Cmakelists

2.1 添加.camke文件

在Cmakelist所在目录下添加文件FindGUROBI.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/gurobi952/mac64/include"
        "C:\\dev\\gurobi952\\win64\\include"
    )

    set(SEARCH_PATHS_FOR_LIBRARIES
        "$ENV{GUROBI_HOME}/lib"
        "/Library/gurobi952/mac64/lib"
        "C:\\dev\\gurobi952\\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 配置Cmakelist

在Cmakelist文件中增加以下内容:

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

在需要使用gurobi的可执行文件添加相应的动态链接库:

target_link_libraries(libcontroller 	##把libcontroller换成你的文件的名字
  ${catkin_LIBRARIES}
  ${GUROBI_LIBRARIES}
)

参考文献:

1.大佬写的文章:https://blog.csdn.net/qq_16775293/article/details/122699629
2.官方文档:https://www.gurobi.com/documentation/9.5/quickstart_linux/software_installation_guid.html

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值