Hello,

On our project (Apache Arrow - https://arrow.apache.org/) we're using
CMake for the C++ source tree and have many external dependencies
fetched using ExternalProject.  In turn building those dependencies can
make up a significant portion of build times on CI services, especially
AppVeyor.  So I've been looking for a solution to cache those
third-party builds from one CI run to the other.

Right now, what I'm trying to do is to set EP_BASE to a well-known base
directory and ask AppVeyor to cache and restore that directory in each
new build.  The AppVeyor caching seems to work fine (the EP_BASE
directory is saved and restored).  However, it seems that nevertheless
CMake will rebuild all those projects again, despite the cached build
results.

This is with CMake 3.12.1 on Windows.

Here is the log for an example build step, here the zstd library:
https://ci.appveyor.com/project/pitrou/arrow/build/1.0.700/job/i4tj6tifp4xq1mjn?fullLog=true#L803

As you can see, CMake notices the downloaded tarball is up-to-date and
doesn't download it again, but it still extracts it again (why?) and
builds the source code anew.  Yet the entire EP_BASE directory (here
"C:/Users/appveyor/arrow-externals") is cached and restored by AppVeyor.

Did someone manage to make this work, and/or is there another solution?

Thank you

Regards

Antoine.
-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
https://cmake.org/mailman/listinfo/cmake

Reply via email to