J'ai un projet CMake sur Linux et j'utilise ExternalProject
pour créer Google Protobuf. Cela fonctionne très bien, mais toutes les versions ultérieures appellent encore l'étape configure dans le projet externe (ce qui est gênant car protobuf est un projet autogen avec une étape plutôt longue). J'ai utilisé l'argument UPDATE_DISCONNECTED
pour qu'il ne soit pas reclassé ce qui aide certains, mais on pourrait penser que s'il ne reclique pas, il n'aurait pas besoin de reconfigurer ou de recréer/installer. Comment puis-je obtenir CMake juste pour le construire une fois et sauter les builds suivants (c'est-à-dire mon prochain make
à partir du répertoire de construction)?ExternalProject_Ajouter le projet autogen empêche de configurer sur la reconstruction
Voici mon CMakeLists.txt
cmake_minimum_required(VERSION 2.8.11)
project(pbuf_test)
include(${PROJECT_SOURCE_DIR}/cmake/protogen.cmake)
set(PBUF_DIR ${PROJECT_BINARY_DIR}/protobuf)
include(ExternalProject)
ExternalProject_Add(protobuf
PREFIX ${PROTOBUF_DIR}
GIT_REPOSITORY https://github.com/google/protobuf.git
GIT_TAG v3.4.1
UPDATE_DISCONNECTED 1
BUILD_IN_SOURCE 1
CONFIGURE_COMMAND ./autogen.sh COMMAND ./configure --prefix=${PBUF_DIR}
)
set(PBUF_INCLUDE_DIR ${PBUF_DIR}/include)
set(PBUF_LIBRARY ${PBUF_DIR}/lib/libprotobuf.so)
set(PBUF_PROTOC ${PBUF_DIR}/bin/protoc)
file(GLOB PBUF_FILES "${PROJECT_SOURCE_DIR}/msg/*.proto")
custom_protobuf_generate_cpp(PBUF_SRCS PBUF_HDRS ${PBUF_FILES})
include_directories(
${PROJECT_BINARY_DIR}
${PBUF_INCLUDE_DIR}
)
add_executable(${PROJECT_NAME} main.cpp ${PBUF_SRCS} ${PBUF_HDRS})
add_dependencies(${PROJECT_NAME} protobuf)
target_link_libraries(${PROJECT_NAME}
${PBUF_LIBRARY}
)