私はLinux上でCMakeプロジェクトを持っており、私はExternalProject
を使ってGoogle Protobufを構築しています。それは素晴らしいですが、後続のビルドでは、外部プロジェクトの設定ステップが呼び出されます(protobufはかなり長いステップの自動プロジェクトです)。私はUPDATE_DISCONNECTED
引数を使って再クローン化しないでください。再クローン化しないと、再クローン化しないと、再構成や再構築/インストールは必要ありません。どのように私はCMakeに一度だけビルドさせ、その後のビルド(ビルドディレクトリから私の次のmake
)をスキップすることができますか?ここでExternalProject_Add autogen projectは再構築時にconfigureを防ぎます
は、私が知っている唯一の方法はadd_command
によって呼び出されるスクリプトに外部のプロジェクトをビルドする手順を移動することです私の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}
)