2016-06-15 59 views
10

Sto costruendo progetto di dipendenza con il comando cmake ExternalProject_Add:Come non make install passo per la costruzione di progetto esterno con CMake

include(ExternalProject) 
... 
set(COMMON_BASE_PROJECT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../CommonBase) 

ExternalProject_Add(CommonBaseProject 
    SOURCE_DIR ${COMMON_BASE_PROJECT_DIR} 
    BINARY_DIR ${COMMON_BASE_PROJECT_DIR}/build 
    INSTALL_COMMMAND "" 
) 

include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include) 
include_directories(${COMMON_BASE_PROJECT_DIR}/include) 

add_library(
    ${LIBRARY_NAME} 
    SHARED 
    ${SRC_FILES} 
    ${INCLUDE_FILES} 
) 

target_link_libraries (Bios ${COMMON_BASE_PROJECT_DIR}/build/libCommonBase.dll) 
add_dependencies(Bios CommonBaseProject) 

ma ottengo l'errore:

[100%] Linking CXX shared library libCommonBase.dll 
[100%] Built target CommonBase 
[ 50%] Performing install step for 'CommonBaseProject' 
make[3]: *** No rule to make target 'install'. Stop. 

non ho bisogno per fare il passo di installazione, quindi la mia domanda è: come disabilitarlo?

+1

Vuoi dire cancellare la linea "INSTALL_COMMMAND """? Ho provato ma il risultato è lo stesso. – Vyacheslav

risposta

6

È possibile generare un obiettivo per il passo di costruzione con STEP_TARGETS build e aggiungere dipendenza su questo particolare obiettivo. I target dei passaggi sono denominati <external-project-name>-<step-name>, pertanto in questo caso il target che rappresenta il passo di generazione sarà denominato CommonBaseProject-build.

Probabilmente si desidera escludere anche CommonBaseProject dalla destinazione "all" con EXCLUDE_FROM_ALL TRUE.

ExternalProject_Add(CommonBaseProject 
    SOURCE_DIR ${COMMON_BASE_PROJECT_DIR} 
    BINARY_DIR ${COMMON_BASE_PROJECT_DIR}/build 
    STEP_TARGETS build 
    EXCLUDE_FROM_ALL TRUE 
) 

add_dependencies(Bios CommonBaseProject-build) 
3

È quasi avuta: invece di mettere qualcosa come INSTALL_COMMAND ""

INSTALL_COMMAND cmake -E echo "Skipping install step." 
+2

Puoi anche usare i comandi 'true' o': ', che non fanno nulla, cioè' INSTALL_COMMAND true'. Ma mostrerà ancora il messaggio "Esecuzione dell'installazione". – Azegor