[CMake] External library dependency
Magnus Johansson
magnus.johansson at foxt.com
Fri Sep 20 03:13:21 EDT 2013
We have a similar situation and the following works well enough for us:
ExternalProject_Add(
big_external_project
...
)
set(OUTPUT_FILES files generated by the external build here)
set_source_files_properties(${OUTPUT_FILES} PROPERTIES GENERATED true)
add_library(internal_library ${OUTPUT_FILES} and whatever else it
depends on)
add_dependencies(internal_library big_external_project)
Once it has been built, the big_external_project rarely gets rebuilt
unless we do a rm -rf * in the build tree.
Magnus
On 09/19/2013 07:31 PM, Weatherby,Gerard wrote:
>
> We have an external library which is not easily "cmakeable" and takes
> a long time to compile. We have a static copy of the source in our
> SCCS, so we don't need to fetch etc.
>
> What we'd like to have happen is have the code compile if and only if
> the output libraries are not present. The best I've come up with is:
>
> add_custom_command(OUTPUT ${CHOMBO_LIBS_2D}
>
> PRE_BUILD
>
> COMMAND ${CHOMBO_BUILD_CMD}
>
> # DEPENDS don't add depends line ... causes
> recompiling of Chombo every time
>
> WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/Chombo/lib
>
> )
>
> # include the Chombo libraries as "source" file to
> trigger building them via "add_custom_command"
>
> # if they don't exist
>
> add_executable(${EXE_2D} ${CHOMBO_LIBS_2D} ${SRC_FILES})
>
> where CHOMBO_LIBS_2D are the libraries generated by CHOMBO_BUILD_CMD.
> The libraries link in the source tree.
>
> This works, mostly. It doesn't work with parallel builds (make --j9)
>
> I tried looking at ExternalProject_Add but didn't seem how to tell it
> what output is generated by the command (and hence I'm not sure how /
> if it can be used to only make if the libraries are missing).
>
> Gerard Weatherby
>
> Appllication Architect
>
> Virtual Cell, Center for Cell Analysis and Modeling (CCAM)
>
> University of Connecticut Health Center
>
> 860-679-2065
>
>
>
> --
>
> 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://www.cmake.org/mailman/listinfo/cmake
--
Magnus Johansson
Developer, Fox Technologies
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20130920/eacf1b70/attachment.htm>
More information about the CMake
mailing list