[CMake] Don't download external projects again after calling "make clean"

Cedric Doucet cedric.doucet at inria.fr
Thu Apr 23 08:01:54 EDT 2015


I don't know why but providing my own STAMP_DIR seems to solve the problem:

STAMP_DIR  ${EXTERNAL_DIR}/eigen/stamp

Hope it helps!

Cédric

----- Mail original -----
> De: "David Cole" <DLRdave at aol.com>
> À: "Cedric Doucet" <cedric.doucet at inria.fr>
> Cc: cmake at cmake.org
> Envoyé: Jeudi 23 Avril 2015 13:56:36
> Objet: Re: [CMake] Don't download external projects again after calling "make clean"
> 
> It looks correct. I don't understand what the error is. It looks like
> the download and extract succeeds, but then it simply doesn't move on
> to the next step of trying to configure with CMake...
> 
> Does the extracted eigen source tree look like it's a proper un-tarred
> eigen source directory?
> 
> Does this simple example work for you? (copied/pasted from another
> recent CMake mailing list discussion...)
> 
> # ----------------------------------------------------------------------
> # CMakeLists.txt
> 
> cmake_minimum_required(VERSION 3.2)
> project(repro NONE)
> 
> include(ExternalProject)
> 
> ExternalProject_Add(name
>     GIT_REPOSITORY https://github.com/dlrdave/SmallAndFast.git
>     GIT_TAG 68c3cebf842aa8a13d659fec428fd85ca3a24307
>     CMAKE_ARGS ""
>     INSTALL_COMMAND ""
> )
> 
> # Possible commits in this repo (most recent first)
> #
> #  68c3cebf842aa8a13d659fec428fd85ca3a24307
> #  a0acdce3a549796ca4424c591c038eeb19e59a72
> #  5e98e304a464946dd34cb4c53eb3dd1fd348781b
> #  8ea36ce26a6b00ab839064a6066a984f6d6647f6
> 
> # END CMakeLists.txt
> 
> 
> Silly question, but do you need to build eigen, or are you using it as
> a header only library?
> 
> And... if you do need to build it, does v3.2.4 of eigen build with
> CMake or does it require some other configure command?
> 
> (I've been assuming you've actually built eigen manually, and you're
> just trying to automate it with ExternalProject... but now I'm
> back-tracking and trying not to assume anything...)
> 
> 
> HTH,
> David C.
> 
> 
> 
> 
> On Thu, Apr 23, 2015 at 7:31 AM, Cedric Doucet <cedric.doucet at inria.fr>
> wrote:
> >
> > Thank you very much.
> > Your remarks are very helpful to me to understand how it works.
> >
> > I hope the following file is now correct:
> >
> > ==================
> > project (example CXX)
> >
> > set(CMAKE_VERBOSE_MAKEFILE ON)
> >
> > include(ProcessorCount)
> > ProcessorCount(N)
> > if(NOT N EQUAL 0)
> >   set(CMAKE_BUILD_FLAGS -j${N})
> > endif()
> >
> > include(ExternalProject)
> > set(EXTERNAL_DIR ${CMAKE_CURRENT_BINARY_DIR})
> > ExternalProject_Add(eigen
> >                     PREFIX ${EXTERNAL_DIR}/eigen
> >                     DOWNLOAD_DIR /home/cdoucet/Downloads/eigen
> >                     SOURCE_DIR ${EXTERNAL_DIR}/eigen/src
> >                     BINARY_DIR ${EXTERNAL_DIR}/eigen/build
> >                     INSTALL_DIR ${EXTERNAL_DIR}/eigen/install
> >                     URL http://bitbucket.org/eigen/eigen/get/3.2.4.tar.gz
> >                     URL_MD5 4d0d77e06fef87b4fcd2c9b72cc8dc55
> >                     CMAKE_ARGS -D CMAKE_INSTALL_PREFIX=<INSTALL_DIR>
> >                    )
> > ===================
> >
> > After deleting /home/cdoucet/Downloads/eigen and all the content of my
> > build directory (from where I call "cmake .."), I typed:
> > cmake ..
> > make
> >
> > and I still obtain the following error message:
> >
> > =====================
> > /usr/local/bibliotheques/cmake/3.2.2/bin/cmake
> > -H/home/cdoucet/Documents/exemples/cmake/external_project/eigen
> > -B/home/cdoucet/Documents/exemples/cmake/external_project/eigen/build
> > --check-build-system CMakeFiles/Makefile.cmake 0
> > /usr/local/bibliotheques/cmake/3.2.2/bin/cmake -E cmake_progress_start
> > /home/cdoucet/Documents/exemples/cmake/external_project/eigen/build/CMakeFiles
> > /home/cdoucet/Documents/exemples/cmake/external_project/eigen/build/CMakeFiles/progress.marks
> > make -f CMakeFiles/Makefile2 all
> > make[1]: entrant dans le répertoire «
> > /home/cdoucet/Documents/exemples/cmake/external_project/eigen/build »
> > make -f CMakeFiles/eigen.dir/build.make CMakeFiles/eigen.dir/depend
> > make[2]: entrant dans le répertoire «
> > /home/cdoucet/Documents/exemples/cmake/external_project/eigen/build »
> > cd /home/cdoucet/Documents/exemples/cmake/external_project/eigen/build &&
> > /usr/local/bibliotheques/cmake/3.2.2/bin/cmake -E cmake_depends "Unix
> > Makefiles" /home/cdoucet/Documents/exemples/cmake/external_project/eigen
> > /home/cdoucet/Documents/exemples/cmake/external_project/eigen
> > /home/cdoucet/Documents/exemples/cmake/external_project/eigen/build
> > /home/cdoucet/Documents/exemples/cmake/external_project/eigen/build
> > /home/cdoucet/Documents/exemples/cmake/external_project/eigen/build/CMakeFiles/eigen.dir/DependInfo.cmake
> > --color=
> > Scanning dependencies of target eigen
> > make[2]: quittant le répertoire «
> > /home/cdoucet/Documents/exemples/cmake/external_project/eigen/build »
> > make -f CMakeFiles/eigen.dir/build.make CMakeFiles/eigen.dir/build
> > make[2]: entrant dans le répertoire «
> > /home/cdoucet/Documents/exemples/cmake/external_project/eigen/build »
> > /usr/local/bibliotheques/cmake/3.2.2/bin/cmake -E cmake_progress_report
> > /home/cdoucet/Documents/exemples/cmake/external_project/eigen/build/CMakeFiles
> > 3
> > [ 12%] Creating directories for 'eigen'
> > /usr/local/bibliotheques/cmake/3.2.2/bin/cmake -E make_directory
> > /home/cdoucet/Documents/exemples/cmake/external_project/eigen/build/eigen/src
> > /usr/local/bibliotheques/cmake/3.2.2/bin/cmake -E make_directory
> > /home/cdoucet/Documents/exemples/cmake/external_project/eigen/build/eigen/build
> > /usr/local/bibliotheques/cmake/3.2.2/bin/cmake -E make_directory
> > /home/cdoucet/Documents/exemples/cmake/external_project/eigen/build/eigen/install
> > /usr/local/bibliotheques/cmake/3.2.2/bin/cmake -E make_directory
> > /home/cdoucet/Documents/exemples/cmake/external_project/eigen/build/eigen/tmp
> > /usr/local/bibliotheques/cmake/3.2.2/bin/cmake -E make_directory
> > /home/cdoucet/Documents/exemples/cmake/external_project/eigen/build/eigen/src/eigen-stamp
> > /usr/local/bibliotheques/cmake/3.2.2/bin/cmake -E make_directory
> > /home/cdoucet/Downloads/eigen
> > /usr/local/bibliotheques/cmake/3.2.2/bin/cmake -E touch
> > /home/cdoucet/Documents/exemples/cmake/external_project/eigen/build/eigen/src/eigen-stamp/eigen-mkdir
> > /usr/local/bibliotheques/cmake/3.2.2/bin/cmake -E cmake_progress_report
> > /home/cdoucet/Documents/exemples/cmake/external_project/eigen/build/CMakeFiles
> > 4
> > [ 25%] Performing download step (download, verify and extract) for 'eigen'
> > cd
> > /home/cdoucet/Documents/exemples/cmake/external_project/eigen/build/eigen
> > && /usr/local/bibliotheques/cmake/3.2.2/bin/cmake -P
> > /home/cdoucet/Documents/exemples/cmake/external_project/eigen/build/eigen/src/eigen-stamp/download-eigen.cmake
> > -- downloading...
> >      src='http://bitbucket.org/eigen/eigen/get/3.2.4.tar.gz'
> >      dst='/home/cdoucet/Downloads/eigen/3.2.4.tar.gz'
> >      timeout='none'
> > -- [download 100% complete]
> > -- [download 0% complete]
> > -- [download 1% complete]
> > -- [download 2% complete]
> > -- [download 3% complete]
> > -- [download 4% complete]
> > -- [download 5% complete]
> > -- [download 7% complete]
> > -- [download 8% complete]
> > -- [download 9% complete]
> > -- [download 10% complete]
> > -- [download 11% complete]
> > -- [download 12% complete]
> > -- [download 13% complete]
> > -- [download 14% complete]
> > -- [download 15% complete]
> > -- [download 17% complete]
> > -- [download 18% complete]
> > -- [download 19% complete]
> > -- [download 20% complete]
> > -- [download 21% complete]
> > -- [download 22% complete]
> > -- [download 23% complete]
> > -- [download 24% complete]
> > -- [download 25% complete]
> > -- [download 27% complete]
> > -- [download 28% complete]
> > -- [download 29% complete]
> > -- [download 30% complete]
> > -- [download 31% complete]
> > -- [download 32% complete]
> > -- [download 33% complete]
> > -- [download 34% complete]
> > -- [download 35% complete]
> > -- [download 36% complete]
> > -- [download 38% complete]
> > -- [download 39% complete]
> > -- [download 40% complete]
> > -- [download 41% complete]
> > -- [download 42% complete]
> > -- [download 43% complete]
> > -- [download 44% complete]
> > -- [download 45% complete]
> > -- [download 46% complete]
> > -- [download 48% complete]
> > -- [download 49% complete]
> > -- [download 50% complete]
> > -- [download 51% complete]
> > -- [download 52% complete]
> > -- [download 53% complete]
> > -- [download 54% complete]
> > -- [download 55% complete]
> > -- [download 56% complete]
> > -- [download 57% complete]
> > -- [download 59% complete]
> > -- [download 60% complete]
> > -- [download 61% complete]
> > -- [download 62% complete]
> > -- [download 63% complete]
> > -- [download 64% complete]
> > -- [download 65% complete]
> > -- [download 66% complete]
> > -- [download 67% complete]
> > -- [download 69% complete]
> > -- [download 70% complete]
> > -- [download 71% complete]
> > -- [download 72% complete]
> > -- [download 73% complete]
> > -- [download 74% complete]
> > -- [download 75% complete]
> > -- [download 76% complete]
> > -- [download 77% complete]
> > -- [download 78% complete]
> > -- [download 80% complete]
> > -- [download 81% complete]
> > -- [download 82% complete]
> > -- [download 83% complete]
> > -- [download 84% complete]
> > -- [download 85% complete]
> > -- [download 86% complete]
> > -- [download 87% complete]
> > -- [download 88% complete]
> > -- [download 90% complete]
> > -- [download 91% complete]
> > -- [download 92% complete]
> > -- [download 93% complete]
> > -- [download 94% complete]
> > -- [download 95% complete]
> > -- [download 96% complete]
> > -- [download 97% complete]
> > -- [download 98% complete]
> > -- [download 99% complete]
> > -- [download 100% complete]
> > -- downloading... done
> > cd
> > /home/cdoucet/Documents/exemples/cmake/external_project/eigen/build/eigen
> > && /usr/local/bibliotheques/cmake/3.2.2/bin/cmake -P
> > /home/cdoucet/Documents/exemples/cmake/external_project/eigen/build/eigen/src/eigen-stamp/verify-eigen.cmake
> > -- verifying file...
> >      file='/home/cdoucet/Downloads/eigen/3.2.4.tar.gz'
> > -- verifying file... done
> > cd
> > /home/cdoucet/Documents/exemples/cmake/external_project/eigen/build/eigen
> > && /usr/local/bibliotheques/cmake/3.2.2/bin/cmake -P
> > /home/cdoucet/Documents/exemples/cmake/external_project/eigen/build/eigen/src/eigen-stamp/extract-eigen.cmake
> > -- extracting...
> >      src='/home/cdoucet/Downloads/eigen/3.2.4.tar.gz'
> >      dst='/home/cdoucet/Documents/exemples/cmake/external_project/eigen/build/eigen/src'
> > -- extracting... [tar xfz]
> > -- extracting... [analysis]
> > -- extracting... [rename]
> > -- extracting... [clean up]
> > -- extracting... done
> > cd
> > /home/cdoucet/Documents/exemples/cmake/external_project/eigen/build/eigen
> > && /usr/local/bibliotheques/cmake/3.2.2/bin/cmake -E touch
> > /home/cdoucet/Documents/exemples/cmake/external_project/eigen/build/eigen/src/eigen-stamp/eigen-download
> > make[2]: *** [eigen/src/eigen-stamp/eigen-download] Erreur 1
> > make[2]: quittant le répertoire «
> > /home/cdoucet/Documents/exemples/cmake/external_project/eigen/build »
> > make[1]: *** [CMakeFiles/eigen.dir/all] Erreur 2
> > make[1]: quittant le répertoire «
> > /home/cdoucet/Documents/exemples/cmake/external_project/eigen/build »
> > make: *** [all] Erreur 2
> >
> > =====================
> >
> >
> >
> > ----- Mail original -----
> >> De: "David Cole" <DLRdave at aol.com>
> >> À: "Cedric Doucet" <cedric.doucet at inria.fr>
> >> Cc: cmake at cmake.org
> >> Envoyé: Jeudi 23 Avril 2015 13:14:35
> >> Objet: Re: [CMake] Don't download external projects again after calling
> >> "make clean"
> >>
> >> I don't understand what the error is here, but here are some comments:
> >>
> >> (1)
> >> CMAKE_INSTALL_PREFIX=$<INSTALL_DIR>
> >>
> >> The $ is unnecessary and incorrect in this context. The literal string
> >> <INSTALL_DIR> is the thing that ExternalProject will substitute when
> >> it is processed into custom commands...
> >>
> >> (2)
> >> ONLY the DOWNLOAD_DIR parameter should be in an "external" (outside of
> >> your build tree) directory, to avoid re-downloading the exact same
> >> tar.gz file over and over again. The source tree and the build tree of
> >> the project should be in your build tree somewhere.
> >>
> >> (3)
> >> CONFIGURE_COMMAND cd <BINARY_DIR> && cmake should be unnecessary...
> >> The configure command is run in the binary dir by default. Instead,
> >> you should be able to use:
> >>
> >> CMAKE_ARGS -D CMAKE_INSTALL_PREFIX=<INSTALL_DIR>
> >>
> >> The binary dir is the working directory for configure, build and
> >> install commands. And the <SOURCE_DIR> is added automatically when you
> >> use CMAKE_ARGS with the default cmake CONFIGURE_COMMAND rather than
> >> specifying your own.
> >>
> >>
> >> Make those changes and try again with one more fresh build (i.e. --
> >> blow away the whole /home/cdoucet/Downloads/eigen directory and start
> >> clean...)
> >>
> >> Let us know if you still have an error after making those changes.
> >>
> >>
> >> HTH,
> >> David C.
> >>
> >>
> >>
> >> On Thu, Apr 23, 2015 at 6:57 AM, Cedric Doucet <cedric.doucet at inria.fr>
> >> wrote:
> >> > Hello David,
> >> >
> >> > I am using CMake 3.2.2.
> >> > I installed CMake from the sources because I use "modules" to manage my
> >> > libraries.
> >> > But it's ok now: I modified the installation so that to support https.
> >> >
> >> > Unfortunately, I still have a problem. :(
> >> > Maybe you could help me!
> >> >
> >> > Here is my CMakeLists.txt:
> >> >
> >> > =============
> >> >
> >> > cmake_minimum_required (VERSION 2.6)
> >> >
> >> > project (example CXX)
> >> >
> >> > set(CMAKE_VERBOSE_MAKEFILE ON)
> >> >
> >> > include(ProcessorCount)
> >> > ProcessorCount(N)
> >> > if(NOT N EQUAL 0)
> >> >     set(CMAKE_BUILD_FLAGS -j${N})
> >> > endif()
> >> >
> >> > include(ExternalProject)
> >> > set(EXTERNAL_DIR /home/cdoucet/Downloads)
> >> > ExternalProject_Add(eigen
> >> >                                    PREFIX ${EXTERNAL_DIR}/eigen
> >> >                                    DOWNLOAD_DIR
> >> > ${EXTERNAL_DIR}/eigen/download
> >> >                                    SOURCE_DIR ${EXTERNAL_DIR}/eigen/src
> >> >                                    BINARY_DIR
> >> >                                    ${EXTERNAL_DIR}/eigen/build
> >> >                                    INSTALL_DIR
> >> >                                    ${EXTERNAL_DIR}/eigen/install
> >> >                                    URL
> >> > http://bitbucket.org/eigen/eigen/get/3.2.4.tar.gz
> >> >                                    URL_MD5
> >> >                                    4d0d77e06fef87b4fcd2c9b72cc8dc55
> >> >                                    CONFIGURE_COMMAND cd <BINARY_DIR> &&
> >> > cmake -D CMAKE_INSTALL_PREFIX=$<INSTALL_DIR> <SOURCE_DIR>
> >> > )
> >> >
> >> > =============
> >> >
> >> > And here is the error message:
> >> >
> >> > =====================
> >> >
> >> > /usr/local/bibliotheques/cmake/3.2.2/bin/cmake
> >> > -H/home/cdoucet/Documents/exemples/cmake/external_project/eigen
> >> > -B/home/cdoucet/Documents/exemples/cmake/external_project/eigen/build
> >> > --check-build-system CMakeFiles/Makefile.cmake 0
> >> > /usr/local/bibliotheques/cmake/3.2.2/bin/cmake -E cmake_progress_start
> >> > /home/cdoucet/Documents/exemples/cmake/external_project/eigen/build/CMakeFiles
> >> > /home/cdoucet/Documents/exemples/cmake/external_project/eigen/build/CMakeFiles/progress.marks
> >> > make -f CMakeFiles/Makefile2 all
> >> > make[1]: entrant dans le répertoire «
> >> > /home/cdoucet/Documents/exemples/cmake/external_project/eigen/build »
> >> > make -f CMakeFiles/eigen.dir/build.make CMakeFiles/eigen.dir/depend
> >> > make[2]: entrant dans le répertoire «
> >> > /home/cdoucet/Documents/exemples/cmake/external_project/eigen/build »
> >> > cd /home/cdoucet/Documents/exemples/cmake/external_project/eigen/build
> >> > &&
> >> > /usr/local/bibliotheques/cmake/3.2.2/bin/cmake -E cmake_depends "Unix
> >> > Makefiles" /home/cdoucet/Documents/exemples/cmake/external_project/eigen
> >> > /home/cdoucet/Documents/exemples/cmake/external_project/eigen
> >> > /home/cdoucet/Documents/exemples/cmake/external_project/eigen/build
> >> > /home/cdoucet/Documents/exemples/cmake/external_project/eigen/build
> >> > /home/cdoucet/Documents/exemples/cmake/external_project/eigen/build/CMakeFiles/eigen.dir/DependInfo.cmake
> >> > --color=
> >> > make[2]: quittant le répertoire «
> >> > /home/cdoucet/Documents/exemples/cmake/external_project/eigen/build »
> >> > make -f CMakeFiles/eigen.dir/build.make CMakeFiles/eigen.dir/build
> >> > make[2]: entrant dans le répertoire «
> >> > /home/cdoucet/Documents/exemples/cmake/external_project/eigen/build »
> >> > /usr/local/bibliotheques/cmake/3.2.2/bin/cmake -E cmake_progress_report
> >> > /home/cdoucet/Documents/exemples/cmake/external_project/eigen/build/CMakeFiles
> >> > 3
> >> > [ 12%] Creating directories for 'eigen'
> >> > /usr/local/bibliotheques/cmake/3.2.2/bin/cmake -E make_directory
> >> > /home/cdoucet/Downloads/eigen/src
> >> > /usr/local/bibliotheques/cmake/3.2.2/bin/cmake -E make_directory
> >> > /home/cdoucet/Downloads/eigen/build
> >> > /usr/local/bibliotheques/cmake/3.2.2/bin/cmake -E make_directory
> >> > /home/cdoucet/Downloads/eigen/install
> >> > /usr/local/bibliotheques/cmake/3.2.2/bin/cmake -E make_directory
> >> > /home/cdoucet/Downloads/eigen/tmp
> >> > /usr/local/bibliotheques/cmake/3.2.2/bin/cmake -E make_directory
> >> > /home/cdoucet/Downloads/eigen/src/eigen-stamp
> >> > /usr/local/bibliotheques/cmake/3.2.2/bin/cmake -E make_directory
> >> > /home/cdoucet/Downloads/eigen/download
> >> > /usr/local/bibliotheques/cmake/3.2.2/bin/cmake -E touch
> >> > /home/cdoucet/Downloads/eigen/src/eigen-stamp/eigen-mkdir
> >> > /usr/local/bibliotheques/cmake/3.2.2/bin/cmake -E cmake_progress_report
> >> > /home/cdoucet/Documents/exemples/cmake/external_project/eigen/build/CMakeFiles
> >> > 4
> >> > [ 25%] Performing download step (download, verify and extract) for
> >> > 'eigen'
> >> > cd /home/cdoucet/Downloads/eigen &&
> >> > /usr/local/bibliotheques/cmake/3.2.2/bin/cmake -P
> >> > /home/cdoucet/Downloads/eigen/src/eigen-stamp/download-eigen.cmake
> >> > -- downloading...
> >> > src='http://bitbucket.org/eigen/eigen/get/3.2.4.tar.gz'
> >> > dst='/home/cdoucet/Downloads/eigen/download/3.2.4.tar.gz'
> >> > timeout='none'
> >> > -- [download 100% complete]
> >> > -- [download 0% complete]
> >> > -- [download 1% complete]
> >> > -- [download 2% complete]
> >> > -- [download 3% complete]
> >> > -- [download 4% complete]
> >> > -- [download 5% complete]
> >> > -- [download 7% complete]
> >> > -- [download 8% complete]
> >> > -- [download 9% complete]
> >> > -- [download 10% complete]
> >> > -- [download 11% complete]
> >> > -- [download 12% complete]
> >> > -- [download 13% complete]
> >> > -- [download 14% complete]
> >> > -- [download 15% complete]
> >> > -- [download 17% complete]
> >> > -- [download 18% complete]
> >> > -- [download 19% complete]
> >> > -- [download 20% complete]
> >> > -- [download 21% complete]
> >> > -- [download 22% complete]
> >> > -- [download 23% complete]
> >> > -- [download 24% complete]
> >> > -- [download 25% complete]
> >> > -- [download 27% complete]
> >> > -- [download 28% complete]
> >> > -- [download 29% complete]
> >> > -- [download 30% complete]
> >> > -- [download 31% complete]
> >> > -- [download 32% complete]
> >> > -- [download 33% complete]
> >> > -- [download 34% complete]
> >> > -- [download 35% complete]
> >> > -- [download 36% complete]
> >> > -- [download 38% complete]
> >> > -- [download 39% complete]
> >> > -- [download 40% complete]
> >> > -- [download 41% complete]
> >> > -- [download 42% complete]
> >> > -- [download 43% complete]
> >> > -- [download 44% complete]
> >> > -- [download 45% complete]
> >> > -- [download 46% complete]
> >> > -- [download 48% complete]
> >> > -- [download 49% complete]
> >> > -- [download 50% complete]
> >> > -- [download 51% complete]
> >> > -- [download 52% complete]
> >> > -- [download 53% complete]
> >> > -- [download 54% complete]
> >> > -- [download 55% complete]
> >> > -- [download 56% complete]
> >> > -- [download 57% complete]
> >> > -- [download 59% complete]
> >> > -- [download 60% complete]
> >> > -- [download 61% complete]
> >> > -- [download 62% complete]
> >> > -- [download 63% complete]
> >> > -- [download 64% complete]
> >> > -- [download 65% complete]
> >> > -- [download 66% complete]
> >> > -- [download 67% complete]
> >> > -- [download 69% complete]
> >> > -- [download 70% complete]
> >> > -- [download 71% complete]
> >> > -- [download 72% complete]
> >> > -- [download 73% complete]
> >> > -- [download 74% complete]
> >> > -- [download 75% complete]
> >> > -- [download 76% complete]
> >> > -- [download 77% complete]
> >> > -- [download 78% complete]
> >> > -- [download 80% complete]
> >> > -- [download 81% complete]
> >> > -- [download 82% complete]
> >> > -- [download 83% complete]
> >> > -- [download 84% complete]
> >> > -- [download 85% complete]
> >> > -- [download 86% complete]
> >> > -- [download 87% complete]
> >> > -- [download 88% complete]
> >> > -- [download 90% complete]
> >> > -- [download 91% complete]
> >> > -- [download 92% complete]
> >> > -- [download 93% complete]
> >> > -- [download 94% complete]
> >> > -- [download 95% complete]
> >> > -- [download 96% complete]
> >> > -- [download 97% complete]
> >> > -- [download 98% complete]
> >> > -- [download 99% complete]
> >> > -- [download 100% complete]
> >> > -- downloading... done
> >> > cd /home/cdoucet/Downloads/eigen &&
> >> > /usr/local/bibliotheques/cmake/3.2.2/bin/cmake -P
> >> > /home/cdoucet/Downloads/eigen/src/eigen-stamp/verify-eigen.cmake
> >> > -- verifying file...
> >> > file='/home/cdoucet/Downloads/eigen/download/3.2.4.tar.gz'
> >> > -- verifying file... done
> >> > cd /home/cdoucet/Downloads/eigen &&
> >> > /usr/local/bibliotheques/cmake/3.2.2/bin/cmake -P
> >> > /home/cdoucet/Downloads/eigen/src/eigen-stamp/extract-eigen.cmake
> >> > -- extracting...
> >> > src='/home/cdoucet/Downloads/eigen/download/3.2.4.tar.gz'
> >> > dst='/home/cdoucet/Downloads/eigen/src'
> >> > -- extracting... [tar xfz]
> >> > -- extracting... [analysis]
> >> > -- extracting... [rename]
> >> > -- extracting... [clean up]
> >> > -- extracting... done
> >> > cd /home/cdoucet/Downloads/eigen &&
> >> > /usr/local/bibliotheques/cmake/3.2.2/bin/cmake -E touch
> >> > /home/cdoucet/Downloads/eigen/src/eigen-stamp/eigen-download
> >> > make[2]: ***
> >> > [/home/cdoucet/Downloads/eigen/src/eigen-stamp/eigen-download]
> >> > Erreur 1
> >> > make[2]: quittant le répertoire «
> >> > /home/cdoucet/Documents/exemples/cmake/external_project/eigen/build »
> >> > make[1]: *** [CMakeFiles/eigen.dir/all] Erreur 2
> >> > make[1]: quittant le répertoire «
> >> > /home/cdoucet/Documents/exemples/cmake/external_project/eigen/build »
> >> > make: *** [all] Erreur 2
> >> >
> >> > =====================
> >> >
> >> >
> >> >
> >> > ________________________________
> >> >
> >> > De: "David Cole" <DLRdave at aol.com>
> >> > À: "Cedric Doucet" <cedric.doucet at inria.fr>
> >> > Cc: cmake at cmake.org
> >> > Envoyé: Samedi 18 Avril 2015 20:39:57
> >> >
> >> > Objet: Re: [CMake] Don't download external projects again after calling
> >> > "make clean"
> >> >
> >> > What version of CMake are you using? All the modern pre-built CMake
> >> > installations should support https without extra effort on your part.
> >> > Are
> >> > you using a pre-built version from somewhere or are you building CMake
> >> > yourself?
> >> >
> >> >
> >> > On Saturday, April 18, 2015, Cedric Doucet <cedric.doucet at inria.fr>
> >> > wrote:
> >> >>
> >> >>
> >> >> Ok it seems the answer to my problem is here:
> >> >> http://www.cmake.org/pipermail/cmake/2010-December/041295.html
> >> >> I will try it.
> >> >>
> >> >> ----- Mail original -----
> >> >> > De: "Cedric Doucet" <cedric.doucet at inria.fr>
> >> >> > À: cmake at cmake.org
> >> >> > Envoyé: Samedi 18 Avril 2015 13:38:31
> >> >> > Objet: Re: [CMake] Don't download external projects again after
> >> >> > calling
> >> >> > "make clean"
> >> >> >
> >> >> >
> >> >> > I have just tried to install curl to get https support.
> >> >> > To do that, I have followed the steps below:
> >> >> >
> >> >> > 1. Installation of openssl:
> >> >> >   1.a. ./config --prefix=/my/openssl/path
> >> >> >   1.b. make
> >> >> >   1.c. make test
> >> >> >   1.d. make install
> >> >> > 2. Installation of curl
> >> >> >   2.a. ./configure --prefix=/my/curl/path
> >> >> > --with-ssl=/my/openssl/path/lib
> >> >> >   2.b. make
> >> >> >   2.c. make install
> >> >> >
> >> >> > I have also prepend PATH with /my/curl/path/bin.
> >> >> > However, the error remains.
> >> >> > It seems that my version of curl (7.41.0) is not taken into acount
> >> >> > because I
> >> >> > have still this line in the error message:
> >> >> > User-Agent: curl/7.38.0
> >> >> > I tried to remove all previous of curl and libcurl but it does not
> >> >> > change
> >> >> > anything.
> >> >> >
> >> >> > Could you help me?
> >> >> >
> >> >> > Cédric
> >> >> >
> >> >> >
> >> >> > ----- Mail original -----
> >> >> > > De: "Cedric Doucet" <cedric.doucet at inria.fr>
> >> >> > > À: "David Cole" <DLRdave at aol.com>
> >> >> > > Cc: cmake at cmake.org
> >> >> > > Envoyé: Samedi 18 Avril 2015 13:00:28
> >> >> > > Objet: Re: [CMake] Don't download external projects again after
> >> >> > > calling
> >> >> > > "make clean"
> >> >> > >
> >> >> > >
> >> >> > > Hello David,
> >> >> > >
> >> >> > > thank you very much.
> >> >> > > Unfortunately, I get the following error message if I remove my
> >> >> > > download
> >> >> > > command:
> >> >> > >
> >> >> > > -- downloading...
> >> >> > >      src='http://bitbucket.org/eigen/eigen/get/3.2.4.tar.gz'
> >> >> > >      dst='/home/cdoucet/Downloads/eigen/download/3.2.4.tar.gz'
> >> >> > >      timeout='none'
> >> >> > > -- [download 100% complete]
> >> >> > > CMake Error at src/eigen-stamp/download-eigen.cmake:27 (message):
> >> >> > >   error: downloading
> >> >> > > 'http://bitbucket.org/eigen/eigen/get/3.2.4.tar.gz'
> >> >> > >   failed
> >> >> > >
> >> >> > >     status_code: 1
> >> >> > >     status_string: "Unsupported protocol"
> >> >> > >     log: Hostname was NOT found in DNS cache
> >> >> > >     Trying 131.103.20.167...
> >> >> > >
> >> >> > >   Connected to bitbucket.org (131.103.20.167) port 80 (#0)
> >> >> > >
> >> >> > >   GET /eigen/eigen/get/3.2.4.tar.gz HTTP/1.1
> >> >> > >
> >> >> > >   User-Agent: curl/7.38.0
> >> >> > >
> >> >> > >   Host: bitbucket.org
> >> >> > >
> >> >> > >   Accept: */*
> >> >> > >
> >> >> > >
> >> >> > >
> >> >> > >   HTTP/1.1 301 Moved Permanently
> >> >> > >
> >> >> > >   Server nginx/1.6.2 is not blacklisted
> >> >> > >
> >> >> > >   Server: nginx/1.6.2
> >> >> > >
> >> >> > >   Date: Sat, 18 Apr 2015 10:55:20 GMT
> >> >> > >
> >> >> > >   Content-Type: text/html
> >> >> > >
> >> >> > >   Content-Length: 184
> >> >> > >
> >> >> > >   Location: https://bitbucket.org/eigen/eigen/get/3.2.4.tar.gz
> >> >> > >
> >> >> > >
> >> >> > >
> >> >> > >   Ignoring the response-body
> >> >> > >
> >> >> > >   <html>
> >> >> > >
> >> >> > >   <head><title>301 Moved Permanently</title></head>
> >> >> > >
> >> >> > >   <body bgcolor="white">
> >> >> > >
> >> >> > >   <center><h1>301 Moved Permanently</h1></center>
> >> >> > >
> >> >> > >   <hr><center>nginx/1.6.2</center>
> >> >> > >
> >> >> > >   </body>
> >> >> > >
> >> >> > >   </html>
> >> >> > >
> >> >> > >   Connection #0 to host bitbucket.org left intact
> >> >> > >
> >> >> > >   Issue another request to this URL:
> >> >> > >   'https://bitbucket.org/eigen/eigen/get/3.2.4.tar.gz'
> >> >> > >
> >> >> > >   Protocol "https" not supported or disabled in libcurl
> >> >> > >
> >> >> > >   Closing connection -1
> >> >> > >
> >> >> > >
> >> >> > >
> >> >> > >
> >> >> > > ----- Mail original -----
> >> >> > > > De: "David Cole" <DLRdave at aol.com>
> >> >> > > > À: "Cedric Doucet" <cedric.doucet at inria.fr>
> >> >> > > > Cc: cmake at cmake.org
> >> >> > > > Envoyé: Vendredi 17 Avril 2015 13:21:08
> >> >> > > > Objet: Re: [CMake] Don't download external projects again after
> >> >> > > > calling
> >> >> > > > "make clean"
> >> >> > > >
> >> >> > > > Eliminate your DOWNLOAD_COMMAND. CMake knows how to do it with
> >> >> > > > just
> >> >> > > > the URL_MD5, DOWNLOAD_DIR and SOURCE_DIR information....
> >> >> > > >
> >> >> > > > HTH,
> >> >> > > > David
> >> >> > > >
> >> >> > > >
> >> >> > > > On Fri, Apr 17, 2015 at 1:32 AM, Cedric Doucet
> >> >> > > > <cedric.doucet at inria.fr>
> >> >> > > > wrote:
> >> >> > > > >
> >> >> > > > > Hello David,
> >> >> > > > >
> >> >> > > > > thank you very much for your help.
> >> >> > > > >
> >> >> > > > > Unfortunately I may do something wrong because it does not
> >> >> > > > > work.
> >> >> > > > > After cleaning, the library is downloaded again.
> >> >> > > > >
> >> >> > > > > I guess my mistake comes from the fact I do not understand the
> >> >> > > > > role of
> >> >> > > > > URL_MD5.
> >> >> > > > > Below is a simple example where downloading and installing is
> >> >> > > > > very
> >> >> > > > > fast.
> >> >> > > > > You just have to replace the value of EXTERNAL_DIR by the path
> >> >> > > > > to
> >> >> > > > > your
> >> >> > > > > own
> >> >> > > > > "Downloads" repository.
> >> >> > > > > I tried to put URL in my DOWNLOAD_COMMAND but the call "wget
> >> >> > > > > <URL>"
> >> >> > > > > does
> >> >> > > > > not seem to be understood by the wget command.
> >> >> > > > >
> >> >> > > > > Thanks again!
> >> >> > > > >
> >> >> > > > > Cédric
> >> >> > > > >
> >> >> > > > >
> >> >> > > > > --------------------------------------------------------------------------
> >> >> > > > > cmake_minimum_required (VERSION 2.6)
> >> >> > > > >
> >> >> > > > > project (example CXX)
> >> >> > > > >
> >> >> > > > > set(CMAKE_VERBOSE_MAKEFILE ON)
> >> >> > > > >
> >> >> > > > > include(ProcessorCount)
> >> >> > > > > ProcessorCount(N)
> >> >> > > > > if(NOT N EQUAL 0)
> >> >> > > > >   set(CMAKE_BUILD_FLAGS -j${N})
> >> >> > > > > endif()
> >> >> > > > >
> >> >> > > > > include(ExternalProject)
> >> >> > > > > set(EXTERNAL_DIR /home/cdoucet/Downloads)
> >> >> > > > > ExternalProject_Add(eigen
> >> >> > > > >                     PREFIX ${EXTERNAL_DIR}/eigen
> >> >> > > > >                     DOWNLOAD_DIR ${EXTERNAL_DIR}/eigen/download
> >> >> > > > >                     SOURCE_DIR ${EXTERNAL_DIR}/eigen/src
> >> >> > > > >                     BINARY_DIR ${EXTERNAL_DIR}/eigen/build
> >> >> > > > >                     INSTALL_DIR ${EXTERNAL_DIR}/eigen/install
> >> >> > > > >                     URL
> >> >> > > > >
> >> >> > > > > http://bitbucket.org/eigen/eigen/get/3.2.4.tar.gz
> >> >> > > > >                     URL_MD5 ccb18a771f678b38a3d33c321a8e7daf
> >> >> > > > >                     DOWNLOAD_COMMAND wget
> >> >> > > > >
> >> >> > > > > http://bitbucket.org/eigen/eigen/get/3.2.4.tar.gz
> >> >> > > > >                     &&
> >> >> > > > >                     tar xvzf 3.2.4.tar.gz -C <SOURCE_DIR>
> >> >> > > > >                     --strip-components=1
> >> >> > > > >                     CONFIGURE_COMMAND cd <BINARY_DIR> && cmake
> >> >> > > > >                     -D
> >> >> > > > >                     CMAKE_INSTALL_PREFIX=$<INSTALL_DIR>
> >> >> > > > > <SOURCE_DIR>
> >> >> > > > >                    )
> >> >> > > > >
> >> >> > > > > ------------------------------------------------------------------------------
> >> >> > > > >
> >> >> > > > >
> >> >> > > > >
> >> >> > > > > ----- Mail original -----
> >> >> > > > >> De: "David Cole" <DLRdave at aol.com>
> >> >> > > > >> À: "Cedric Doucet" <cedric.doucet at inria.fr>
> >> >> > > > >> Cc: cmake at cmake.org
> >> >> > > > >> Envoyé: Lundi 13 Avril 2015 12:40:34
> >> >> > > > >> Objet: Re: [CMake] Don't download external projects again
> >> >> > > > >> after
> >> >> > > > >> calling
> >> >> > > > >> "make clean"
> >> >> > > > >>
> >> >> > > > >> Use the URL_MD5 and DOWNLOAD_DIR arguments to
> >> >> > > > >> ExternalProject_Add
> >> >> > > > >> to
> >> >> > > > >> put the downloaded files into a location outside the build
> >> >> > > > >> tree
> >> >> > > > >> (perhaps ~/Downloads on Mac/Linux or
> >> >> > > > >> $ENV{USERPROFILE}/Downloads
> >> >> > > > >> on
> >> >> > > > >> Windows).
> >> >> > > > >>
> >> >> > > > >> With DOWNLOAD_DIR outside the build tree, and the checksums of
> >> >> > > > >> the
> >> >> > > > >> downloaded files being the same as you've specified via
> >> >> > > > >> URL_MD5,
> >> >> > > > >> the
> >> >> > > > >> download portion will be avoided once there is a local copy of
> >> >> > > > >> a
> >> >> > > > >> file
> >> >> > > > >> available.
> >> >> > > > >>
> >> >> > > > >>
> >> >> > > > >> HTH,
> >> >> > > > >> David C.
> >> >> > > > >>
> >> >> > > > >>
> >> >> > > > >> On Mon, Apr 13, 2015 at 5:04 AM, Cedric Doucet
> >> >> > > > >> <cedric.doucet at inria.fr>
> >> >> > > > >> wrote:
> >> >> > > > >> >
> >> >> > > > >> > Hello!
> >> >> > > > >> >
> >> >> > > > >> > I use the ExternalProject_Add function to download
> >> >> > > > >> > third-party
> >> >> > > > >> > libraries
> >> >> > > > >> > of
> >> >> > > > >> > a code.
> >> >> > > > >> >
> >> >> > > > >> > Once a library has been downloaded, I can call "make" as
> >> >> > > > >> > many
> >> >> > > > >> > times
> >> >> > > > >> > as
> >> >> > > > >> > I
> >> >> > > > >> > want without downloading this library again.
> >> >> > > > >> > It seems that CMake detects that the library has already
> >> >> > > > >> > been
> >> >> > > > >> > downloaded.
> >> >> > > > >> >
> >> >> > > > >> > However, calling "make clean" seems to destroy this feature.
> >> >> > > > >> > Even if my library is not uninstalled during cleaning,
> >> >> > > > >> > calling
> >> >> > > > >> > "make"
> >> >> > > > >> > after
> >> >> > > > >> > "make clean" will lead CMake to try download the library
> >> >> > > > >> > again.
> >> >> > > > >> >
> >> >> > > > >> > How could I tell CMake not to download the library again?
> >> >> > > > >> >
> >> >> > > > >> > Thank you very much for your help!
> >> >> > > > >> >
> >> >> > > > >> > Cédric
> >> >> > > > >> >
> >> >> > > > >> > --
> >> >> > > > >> >
> >> >> > > > >> > 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:
> >> >> > > > >> > http://public.kitware.com/mailman/listinfo/cmake
> >> >> > > > >>
> >> >> > > >
> >> >> > > --
> >> >> > >
> >> >> > > 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:
> >> >> > > http://public.kitware.com/mailman/listinfo/cmake
> >> >> > >
> >> >> > --
> >> >> >
> >> >> > 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:
> >> >> > http://public.kitware.com/mailman/listinfo/cmake
> >> >> >
> >> >> --
> >> >>
> >> >> 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:
> >> >> http://public.kitware.com/mailman/listinfo/cmake
> >> >
> >> >
> >> >
> >> > --
> >> >
> >> > 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:
> >> > http://public.kitware.com/mailman/listinfo/cmake
> >>
> 
> 


More information about the CMake mailing list