2014-07-01 8 views
5

Voglio solo scaricare un repository git di via cmake e copiare la cartella di origine in un'altra posizione. Ecco un esempio di lavoro minima:cmake non eseguirà build_command in ExternalProject_Add correttamente

cmake_minimum_required (VERSION 2.8) 
project ("myProject") 
include(ExternalProject) 

# Download and copy the repository 
set(PROJECT_NAME_CHIBIOS "ChibiOS") 
ExternalProject_Add(${PROJECT_NAME_CHIBIOS} 
        PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME_CHIBIOS}-Download 
        GIT_REPOSITORY https://github.com/ChibiOS/ChibiOS-RT.git 
        GIT_TAG b440caa10ced9532a467e4cbb96e1b3f0b99060a 
        CONFIGURE_COMMAND "" 
        BUILD_COMMAND "${CMAKE_COMMAND} -E copy_directory <SOURCE_DIR> ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME_CHIBIOS}" 
        UPDATE_COMMAND "" 
        INSTALL_COMMAND "" 
        LOG_DOWNLOAD 1 
        LOG_UPDATE 1 
        LOG_CONFIGURE 1 
        LOG_BUILD 1 
        LOG_TEST 1 
        LOG_INSTALL 1 
       ) 

Tutto tranne il comando di copia in BUILD_COMMAND lavori fuori dalla scatola. make dice basta:

Scanning dependencies of target ChibiOS 
[ 12%] Creating directories for 'ChibiOS' 
[ 25%] Performing download step (git clone) for 'ChibiOS' 
-- ChibiOS download command succeeded. See also /tmp/ChibiOS-Download/src/ChibiOS-stamp/ChibiOS-download-*.log 

[ 37%] No patch step for 'ChibiOS' 
[ 50%] No update step for 'ChibiOS' 
[ 62%] No configure step for 'ChibiOS' 
[ 75%] Performing build step for 'ChibiOS' 
CMake Error at /tmp/ChibiOS-Download/src/ChibiOS-stamp/ChibiOS-build.cmake:16 (message): 
    Command failed: No such file or directory 

    '/usr/bin/cmake -E copy_directory /tmp/ChibiOS-Download/src/ChibiOS /tmp/ChibiOS' 

Ma se copio /usr/bin/cmake -E copy_directory /tmp/ChibiOS-Download/src/ChibiOS /tmp/ChibiOS nella shell, funziona in seguito.

Cosa sto sbagliando?

risposta

5

Per il tuo BUILD_COMMAND, hai racchiuso l'intero comando tra virgolette, quindi CMake lo vede come un singolo argomento.

Hai solo bisogno di togliere le virgolette per consentire CMake per risolvere questo come un comando con 4 argomenti:

... 
BUILD_COMMAND ${CMAKE_COMMAND} -E copy_directory <SOURCE_DIR> ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME_CHIBIOS} 
... 
+0

E 'proprio così semplice. Sei grande! Grazie – Tik0

Problemi correlati