2011-05-13 53 views
4

两天前,我添加了一个外部项目来使用autotools编译一个项目。它完美地工作,直到今天......CMake ExternalProject的错误

我有一个奇怪的错误:

CMake Error at /usr/share/cmake-2.8/Modules/ExternalProject.cmake:710 (message): error: no download info for 'libantlr3c' -- please specify existing SOURCE_DIR or one of URL, CVS_REPOSITORY and CVS_MODULE, SVN_REPOSITORY or 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 
) 

所以这个错误不是招”没有任何意义......昨天完美无缺(直到现在没有任何改变)。

有什么想法?

谢谢!

回答

3

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

3

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

您需要使用URL参数,但有一个问题。如果你只是给它的路径,它假定你将它指向一个档案,而不是一个目录。你有“文件://”前面加上你的路径,例如:

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当它不存在。