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

David Cole DLRdave at aol.com
Thu Apr 23 07:56:36 EDT 2015


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