2011-05-13 64 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當它不存在。