使用ExternalProject进行CMake错误

时间:2011-05-13 21:22:20

标签: build cmake build-process autotools external-project

两天前,我添加了一个外部项目来使用autotools编译项目。它一直工作到今天......

我有一个奇怪的错误:

  

CMake错误   /usr/share/cmake-2.8/Modules/ExternalProject.cmake:710(消息):错误:没有下载信息   对于'libantlr3c' - 请指定现有的SOURCE_DIR或其中一个URL,CVS_REPOSITORY和CVS_MODULE,SVN_REPOSITORY或DOWNLOAD_COMMAND

其中一条规则实际上是指定的(SOURCE_DIR):

cmake_minimum_required(VERSION 2.8)
# ...
include(ExternalProject)
ExternalProject_Add(
  libantlr3c
  SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/lib/libantlr3c-3.1.3
  CONFIGURE_COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/lib/libantlr3c-3.1.3/configure --prefix=${CMAKE_CURRENT_SOURCE_DIR}/lib/libantlr3c-3.1.3
  PREFIX ${CMAKE_CURRENT_SOURCE_DIR}/lib/libantlr3c-3.1.3
  BUILD_COMMAND make
  BUILD_IN_SOURCE 1
)

所以这个错误没有任何意义......昨天完全正常工作(直到现在都没有改变)。

有什么想法吗?

谢谢!

2 个答案:

答案 0 :(得分:3)

这是2.8.0版本的错误。安装2.8.3或更高版本......

答案 1 :(得分:3)

即使使用2.8.6我也有类似的问题,文档也没什么帮助。我在网上找到了一个例子,它给了我需要的提示。

你需要使用URL参数,但有一个问题。如果您只是给它指向direcotry的路径,它假定您将其指向存档,而不是目录。您必须在路径前添加“file://”,例如:

ExternalProject_Add(
  libantlr3c
  URL file://${CMAKE_CURRENT_SOURCE_DIR}/lib/libantlr3c-3.1.3
  SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/lib/libantlr3c-3.1.3
  CONFIGURE_COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/lib/libantlr3c-3.1.3/configure --prefix=${CMAKE_CURRENT_SOURCE_DIR}/lib/libantlr3c-3.1.3
  PREFIX ${CMAKE_CURRENT_SOURCE_DIR}/lib/libantlr3c-3.1.3
  BUILD_COMMAND make
  BUILD_IN_SOURCE 1
)

现在我必须弄清楚(在我的项目中)为什么它在<project>-mkdir不存在时才会找到它。