【问题标题】:CMAKE not finding GUROBI external libraryCMAKE 找不到 GUROBI 外部库
【发布时间】:2019-02-23 14:00:22
【问题描述】:

我是 CPP、GUROBI 和 CMAKE 的新手。我正在开发一个项目,我正在尝试编译一个 C++ 程序,该程序需要链接到 GUROBI 外部库 libgurobi81.so 和 libgurobi_c++.a,如 GUROBI 站点 here 和 here 中所述。 我的 cmake 和我的项目的结构是这样的:

-folder1
--src
---cmake
--gurobi
---lib
----libgurobi81.so
----libgurobi_c++.a

我的代码编译正确,但只有在与库链接时才会失败。 我试图让 CMAKE 找到库:

find_library(C_GUROBI_LIB NAMES libgurobi81.so gurobi81 gurobi81_light                                                  
    PATHS   ${LD_LIBRARY_PATH}
            /path/to/folder1/gurobi/lib/
        )
find_library(CPP_GUROBI_LIB NAMES gurobi_c++
    PATHS   ${LD_LIBRARY_PATH}
            /path/to/folder1/folder1/gurobi/lib/
    )

然后打印出来:

message("C_GUROBI_LIB points to " ${C_GUROBI_LIB})
message("CPP_GUROBI_LIB points to " ${CPP_GUROBI_LIB})

但是,即使库在该文件夹中,CMAKE 也找不到它并且什么也不显示:

C_GUROBI_LIB points to 
CPP_GUROBI_LIB points to 

【问题讨论】:

  • 您是否尝试过使用绝对路径而不是相对路径?
  • 感谢您的回答。在我的问题中,我写道:../folder1/gurobi/lib/ 似乎它是相对的。但实际上我的意思是还有一些其他文件夹。我在这两种情况下都使用绝对路径: /var/tmp/folder1/ ...我什至尝试使用: SET (CMAKE_INCLUDE_PATH "/var/tmp/folder1/gurobi810/linux64/lib/") include_directories(/var/ tmp/folder1/gurobi810/linux64/lib/) LINK_DIRECTORIES(/var/tmp/folder1/gurobi810/linux64/lib/) 但无济于事...
  • find_library 的结果变量不能是空字符串:它应该是绝对路径 或*-NOTFOUND 字符串。尝试清除构建目录并重复配置步骤(运行cmake)。
  • 你是对的!...原来这是一个错字。但是,它只找到了第二个库:CPP_GUROBI_LIB,即libgurobi_c++.a的位置。但是,即使 libgurobi81.so 在同一个文件夹中,也找不到它...

标签: c++ cmake gurobi


【解决方案1】:

我找到了一个可能的解决方案,改编自here:

set(CMAKE_FIND_LIBRARY_SUFFIXES ".so" ".a")

我还有一些其他问题,例如库被编译为 64 位,还有 CMAKE 不允许添加共享文件。所以我不得不更改一些参数,但即使这样,CMAKE 也没有找到该文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-17
    相关资源
    最近更新 更多