[CMake] How to integrate autoconf based library into my cmake build tree

David Cole david.cole at kitware.com
Mon Mar 1 12:16:17 EST 2010


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.calori at 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 <amzproject at 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.calori at 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>) 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
>>>>>>
>>>>>> 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
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>> _______________________________________________
>>> 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
>>>
>>>
>>
>>
>>
>>
>>
>
>
> _______________________________________________
> 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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20100301/e241c638/attachment.htm>


More information about the CMake mailing list