From 2a1418e6f2e2dcf8631606e4ab97a1996b12b8c1 Mon Sep 17 00:00:00 2001 From: Liangliang He Date: Fri, 14 Jun 2019 13:11:55 +0800 Subject: [PATCH] Enable ccache in build --- CMakeLists.txt | 9 +++++++++ docker/mace-dev/Dockerfile | 3 +++ third_party/gflags/gflags.cmake | 3 +++ third_party/googletest/googletest.cmake | 5 ++++- third_party/protobuf/protobuf.cmake | 6 +++++- 5 files changed, 24 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9714b145..b4a6dbba 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,9 +15,18 @@ option(MACE_ENABLE_BENCHMARKS "whether to build c++ micro benchmarks" OFF) option(MACE_ENABLE_EXAMPLES "whether to build examples" OFF) option(MACE_ENABLE_OPT_SIZE "whether to build with optimized binary size" ON) option(MACE_ENABLE_OBFUSCATE "whether to build with code obfuscation" ON) +option(MACE_ENABLE_CCACHE "whether to build with ccache" ON) message("CMAKE_INSTALL_PREFIX: ${CMAKE_INSTALL_PREFIX}") +if(MACE_ENABLE_CCACHE) + find_program(CCACHE_FOUND ccache) + if(CCACHE_FOUND) + set(CMAKE_CXX_COMPILER_LAUNCHER ccache) + set(CMAKE_C_COMPILER_LAUNCHER ccache) + endif(CCACHE_FOUND) +endif(MACE_ENABLE_CCACHE) + # TODO make these flags well defined and organized # TODO enable sanitizer set(MACE_CC_FLAGS "${MACE_CC_FLAGS} -fPIC") diff --git a/docker/mace-dev/Dockerfile b/docker/mace-dev/Dockerfile index 8bb31a7d..5ae643a9 100644 --- a/docker/mace-dev/Dockerfile +++ b/docker/mace-dev/Dockerfile @@ -111,3 +111,6 @@ RUN pip install -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors RUN pip install -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com \ cpplint==1.4.4 + +RUN apt-get install -y --no-install-recommends \ + ccache diff --git a/third_party/gflags/gflags.cmake b/third_party/gflags/gflags.cmake index ded60019..1134718c 100644 --- a/third_party/gflags/gflags.cmake +++ b/third_party/gflags/gflags.cmake @@ -24,6 +24,9 @@ ExternalProject_Add( UPDATE_COMMAND "" BUILD_BYPRODUCTS ${GFLAGS_LIBRARIES} CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${GFLAGS_INSTALL_DIR} + -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} + -DCMAKE_CXX_COMPILER_LAUNCHER=${CMAKE_CXX_COMPILER_LAUNCHER} + -DCMAKE_C_COMPILER_LAUNCHER=${CMAKE_C_COMPILER_LAUNCHER} -DBUILD_STATIC_LIBS=ON -DBUILD_TESTING=OFF -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} diff --git a/third_party/googletest/googletest.cmake b/third_party/googletest/googletest.cmake index 6b715c87..f5dd0974 100644 --- a/third_party/googletest/googletest.cmake +++ b/third_party/googletest/googletest.cmake @@ -32,7 +32,10 @@ if(MACE_ENABLE_TESTS) PREFIX ${GTEST_SOURCES_DIR} UPDATE_COMMAND "" BUILD_BYPRODUCTS ${GTEST_LIBRARIES} ${GTEST_MAIN_LIBRARIES} - CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${GTEST_INSTALL_DIR} + CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} + -DCMAKE_CXX_COMPILER_LAUNCHER=${CMAKE_CXX_COMPILER_LAUNCHER} + -DCMAKE_C_COMPILER_LAUNCHER=${CMAKE_C_COMPILER_LAUNCHER} + -DCMAKE_INSTALL_PREFIX=${GTEST_INSTALL_DIR} -DBUILD_GMOCK=ON -Dgtest_disable_pthreads=ON -Dgtest_force_shared_crt=ON diff --git a/third_party/protobuf/protobuf.cmake b/third_party/protobuf/protobuf.cmake index 4f95317d..d3863513 100644 --- a/third_party/protobuf/protobuf.cmake +++ b/third_party/protobuf/protobuf.cmake @@ -33,7 +33,9 @@ ExternalProject_Add( BUILD_BYPRODUCTS ${PROTOBUF_LITE_LIBRARIES} SOURCE_DIR "${PROTOBUF_SRCS_DIR}/src/protobuf" CONFIGURE_COMMAND ${CMAKE_COMMAND} ../protobuf/cmake/ - #-DCMAKE_BUILD_TYPE=Release + -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} + -DCMAKE_CXX_COMPILER_LAUNCHER=${CMAKE_CXX_COMPILER_LAUNCHER} + -DCMAKE_C_COMPILER_LAUNCHER=${CMAKE_C_COMPILER_LAUNCHER} -DCMAKE_INSTALL_PREFIX=${PROTOBUF_INSTALL_DIR} -DCMAKE_VERBOSE_MAKEFILE=OFF -Dprotobuf_BUILD_TESTS=OFF @@ -90,6 +92,8 @@ if(BUILD_PROTOC) SOURCE_DIR "${PROTOC_SRCS_DIR}/src/protoc" CONFIGURE_COMMAND ${CMAKE_COMMAND} ../protoc/cmake/ -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CXX_COMPILER_LAUNCHER=${CMAKE_CXX_COMPILER_LAUNCHER} + -DCMAKE_C_COMPILER_LAUNCHER=${CMAKE_C_COMPILER_LAUNCHER} -DCMAKE_INSTALL_PREFIX=${PROTOC_INSTALL_DIR} -DCMAKE_VERBOSE_MAKEFILE=OFF -Dprotobuf_BUILD_TESTS=OFF -- GitLab