Cmake没有使用用户配置的lib进行链接

时间:2016-09-13 07:01:44

标签: cmake cudnn

我正在使用cmake(3.5.0)在Ubuntu 14.04上编译C ++项目,这取决于Nvidia Cudnn。虽然我已经配置了路径,但似乎cmake没有为链接器提供正确的cudnn路径。

文件FindCUDNN.cmake:

function eval(id,correct,set)
  print(#set)
end

function evolve(Problem,Set)
  local AFitness = eval(A,Problem,Set)
  local BFitness = eval(B,Problem,Set)
end

  BinarySet={{0,0},{1,0},{0,1},{1,1}}
for i=1, 10 do
  evolve(Target,BinarySet) 
end

CMakeLists.txt:

FIND_PATH(CUDNN_INCLUDE_DIR NAME "cudnn.h" PATHS "$ENV{CMAKE_INCLUDE_PATH}")
FIND_LIBRARY(CUDNN_LIBRARIES NAME "libcudnn.so" PATHS "$ENV{CMAKE_LIBRARY_PATH}")
INCLUDE(FindPackageHandleStandardArgs)
find_package_handle_standard_args(CUDNN DEFAULT_MSG CUDNN_INCLUDE_DIR CUDNN_LIBRARIES)
MARK_AS_ADVANCED(CUDNN_INCLUDE_DIR CUDNN_LIBRARIES)

FIND_PACKAGE(CUDNN REQUIRED) LIST(APPEND LINKER_LIBS ${CUDNN_LIBRARIES}) ... ADD_LIBRARY(myobjects OBJECT ${mysources}) ADD_LIBRARY(mylib SHARED $<TARGET_OBJECTS:myobjects> ${cuda_objs}) TARGET_LINK_LIBRARIES(mylib ${LINKER_LIBS}) 将导出到我的主文件夹中的cudnn5路径。在CMAKE_INCLUDE_PATH, CMAKE_LIBRARY_PATH之后,CmakeCache.txt中的路径设置为cudnn5。 但是,链接器(和link.txt)使用cmake ..而不使用cudnn5的路径。因此,它链接系统文件夹中的cudnn4,即-lcudnn

注意:如果我的系统文件夹中没有cudnn4,一切都很好。 link.txt文件和/usr/local/cuda/lib64的输出在链接期间使用cudnn 5的绝对路径。

0 个答案:

没有答案