【发布时间】: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 在同一个文件夹中,也找不到它...