使用CMake构建开源库Teem并提供Levmar支持

时间:2015-05-07 17:09:08

标签: c++ cmake static-libraries

我尝试在Windows 64bit下使用带有生成器VisualStudio10 Win64的cmakeGUI支持levmar构建库Teem。

首先,我用CLAPACK和F2C建立了Levmar。这很好,因为levmar可以编译而没有错误,并且演示成功了。

神秘的是,当我尝试用levmar支持ON来构建teem时,cmake总是将其关闭"因为它没有找到"虽然我告诉cmake levmar.lib的路径。

这就是CmakeGUI告诉我的: "警告:关闭Teem_LEVMAR,因为找不到它。 配置完成"

以下是与teem一起提供的CMakeList.txt的一部分:

# Look for "levmar" library <http://www.ics.forth.gr/~lourakis/levmar/>
option(Teem_LEVMAR "Build Teem with levmar library support." OFF)
set(Teem_LEVMAR_LIB "")
if(Teem_LEVMAR)
  find_package(LEVMAR)

  if(LEVMAR_FOUND)
    add_definitions(-DTEEM_LEVMAR)
    set(Teem_LEVMAR_LIB ${LEVMAR_LIBRARIES})
    set(Teem_LEVMAR_IPATH ${LEVMAR_INCLUDE_DIR})
  else()
    # We need to set this as a cache variable, so that it will show up as
    # being turned off in the cache.
    message("warning: Turning off Teem_LEVMAR, because it wasn't found.")
    set(Teem_LEVMAR OFF CACHE BOOL "Build Teem with levmar library support." FORCE)
  endif()
endif()

有谁知道这里发生了什么?

我用3种不同的levmar.lib和不同的生成器尝试了同样的事情但不幸的是我建议我必须告诉cmake库的确切名称或名称levmar.lib是完全错误的。

我向我的主管报告了我的论文的问题,但是他遇到了同样的问题并且无法帮助我。

我也尝试修改CMakeList:

#if(Teem_LEVMAR)
  include_directories(${LEVMAR}/lib)
#endif()

原来是

if(Teem_LEVMAR)
  include_directories(${Teem_LEVMAR_IPATH})
endif()

但它没有帮助。

为什么cmake将levmar.lib识别为levmar库,实际上并不接受它。 我也试图理解为什么find_package(levmar)没有成功,但现在我不知道有什么方法可以让它发挥作用。

问候, jan luca。

0 个答案:

没有答案