Hi David, I have done some experimental work on improving ExternalProject
I worked a bit on avoiding downloads, keeping a single source in Release/Debug under Visual Studio and adding
Bazaar repo and  zip unpacking.
Could this be on some interest?
In case, which is the preferred method of providing patches?
The code is
http://3d.cineca.it/storage/bazaar_repo/CmakeDeps/lib/wt/CMakeModules/ExternalProject.cmake
I think my version does not breaks usage, but not really sure, as I just used it in my project.

Thanks in advance

Luigi




David Cole wrote:
This recently submitted bug is probably related:
http://public.kitware.com/Bug/view.php?id=10346

I have not had a chance to investigate yet, but it sounds like you are not alone in experiencing the "no download given" error when specifying a SOURCE_DIR...

Keep an eye on that bug for future updates.


David



On Mon, Mar 1, 2010 at 3:35 AM, Luigi Calori <l.cal...@cineca.it <mailto:l.cal...@cineca.it>> wrote:

    Michael Wild wrote:

        On 1. Mar, 2010, at 4:10 , Albert Z wrote:

            I just found that unless I explicitly include
            ExternalProject.cmak in my
            cmake build, cmake won't find command
            "ExternalProject_Add", which is pretty
            weird for me.
            include(/usr/local/share/cmake-2.8/Modules/ExternalProject.cmake)

        Again:

        include(ExternalProject)

        will do... But then, the man-pages would tell you that.
    The

    ExternalProject.cmake contains the function ExternalProject_Add
    ... so you have to explicitly include it to have the function
    defined.


            And now the problem is that if I use the following cmake
            script to build apr

             ExternalProject_Add(${LIB_NAME}
               PREFIX /home/xxx/prj/trunk/external/apr/1.3.9
               SOURCE_DIR /home/xxx/prj/trunk/external/apr/1.3.9
               CONFIGURE_COMMAND
            /home/xxx/prj/trunk/external/apr/1.3.9/configure
            --enable-static --disable-shared --disable-ipv6
               BINARY_DIR "/home/xxx/prj/trunk/external/apr/1.3.9/.libs/"
               BUILD_COMMAND make all
             )


        You most probably don't want to use hard-coded paths, but
        something relative to either CMAKE_SOURCE_DIR or CMAKE_BINARY_DIR.
    Correct, otherwise you ' ll have to change your cmake code whan
    move the
    stuff


            CMake complains

             error: no download info for 'apr' -- please specify
            existing SOURCE_DIR or
             one of URL, CVS_REPOSITORY and CVS_MODULE, SVN_REPOSITORY or
             DOWNLOAD_COMMAND

            I have already specified the SOURCE_DIR, and I do not want
            the library is
            downloaded online. Is it a bug of CMake? Or I have done
            something wrong?

        Does SOURCE_DIR exist and contain the apr sources?

        If I was you, I'd prefer to specify a URL to a tar-ball on the
        local system (e.g.
        ${CMAKE_SOURCE_DIR}/external/apr-1.3.9.tgz), point SOURCE_DIR
        to ${CMAKE_BINARY_DIR}/external/apr and then let CMake to the
        rest.
    If your source is alredy complete, try setting up DOWNLOAD_COMMAND ""
    Anyway, I agree it would be probably better specifying a URL (either
    local or remote) like
    URL http://apache.fastbull.org/apr/apr-1.3.9.tar.gz and let him do: it
    is cleaner and easier.

    Then if you have mods, you can specify a PATCH_COMMAND to apply
    your patches
    If apr configure must be run in-source, specify

    BUILD_IN_SOURCE 1

    But in that case, if you do not have a download step, your source
    will be cluttered, so another good reason
    to specify a URL

    I' ll probably would add some configure based libs to my deps, If
    you are interested, I' ll let you know.

    Luigi



        Also, I might be wrong, but are you building in-source? If so,
        please don't and read
        http://www.cmake.org/Wiki/CMake_FAQ#Out-of-source_build_trees.

        Michael

            On Sun, Feb 28, 2010 at 5:45 PM, Albert Z
            <amzproj...@gmail.com <mailto:amzproj...@gmail.com>> wrote:

                Thanks, Luigi. However, I read the CMake 2.8 doc and
                tried to use function
                "ExternalProject_Add". When I ran cmake in the root of
                my project, I got the
                following error

                Unknown CMake command "ExternalProject_Add"

                I tried on both linux and mac and got the same error.
                And I am sure the
                version of the cmake is 2.8

                Best,
                Meng


                On Sun, Feb 28, 2010 at 4:50 AM, Luigi Calori
                <l.cal...@cineca.it <mailto:l.cal...@cineca.it>> wrote:

                    Albert Z wrote:

                        Hello,
                        Our project now uses a bunch of 3rd party
                        libraries such as apr,
                        protobuf, libcurl, etc. Almost all of these
                        libraries use autoconf (
                        configure.in <http://configure.in>
                        <http://configure.in>) based build system.
                        Since we have
                        some modifications to most of the libraries,
                        we have to integrate these
                        libraries to our cmake build tree. What is the
                        easiest way to integrate such
                        a 3rd-party library to a cmake build with
                        keeping the maximum portability?

                    Try to look at ExternalProject module
                    
http://www.cmake.org/cmake/help/cmake-2-8-docs.html#module:ExternalProject
                    and page 10 of
                    
http://www.kitware.com/products/archive/kitware_quarterly1009.pdf

                    I have used it (with some mods): it allow to
                    automate download
                    pactch,build and install)
                    Anyway, curl have recently included a CMakeLists
                    in its distribution. I
                    have used it even if had to apply some patches.
                    I am trying to collect some cmake build recipes
                    for some libraries I need.
                    If you are interested, grab the stuff at
                    bzr branch
                    http://3d.cineca.it/storage/bazaar_repo/CmakeDeps/lib

                    HTH

                    Luigi

                    
------------------------------------------------------------------------
                        _______________________________________________
                        Powered by www.kitware.com
                        <http://www.kitware.com>

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

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

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

                    _______________________________________________
                    Powered by www.kitware.com <http://www.kitware.com>

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

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

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

            _______________________________________________
            Powered by www.kitware.com <http://www.kitware.com>

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

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

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





    _______________________________________________
    Powered by www.kitware.com <http://www.kitware.com>

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

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

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



_______________________________________________
Powered by www.kitware.com

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

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

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

Reply via email to