[CMake] ExternalProject_Add

James Sutherland James.Sutherland at utah.edu
Fri Jan 13 18:52:34 EST 2017


I found this solution helpful:
  https://crascit.com/2015/07/25/cmake-gtest
It is unfortunate that CMake doesn't have a proper way to accomplish this.
--James


On Sun, Jan 8, 2017 at 10:07 PM, Hendrik Sattler <post at hendrik-sattler.de>
wrote:

> One possibility is the often mentioned superbuild, another is not using
> find_library() but setting the variables with the library file paths
> manually (that's static info anyway).
>
>
> Am 8. Januar 2017 22:49:52 MEZ schrieb Saad Khattak <saadrustam at gmail.com
> >:
> >Hello,
> >
> >I have an external project glfw that I added to my project like this:
> >
> >==========
> >include(ExternalProject)
> >ExternalProject_Add(glfw
> >  GIT_REPOSITORY "https://github.com/glfw/glfw.git"
> >  GIT_TAG "master"
> >
> >  SOURCE_DIR "${CMAKE_SOURCE_DIR}/dep/glfw"
> >  CMAKE_ARGS -DGLFW_BUILD_DOCS=OFF -DGLFW_BUILD_TESTS=OFF
> >-DGLFW_BUILD_EXAMPLES=OFF
> >-DCMAKE_INSTALL_PREFIX=${CMAKE_SOURCE_DIR}/install/glfw/
> >-DCMAKE_DEBUG_POSTFIX=_d
> >
> >  TEST_COMMAND ""
> >  )
> >set(GLFW_INCLUDE_DIR "${CMAKE_SOURCE_DIR}/install/glfw/include/")
> >set(GLFW_LIBRARY_DIR "${CMAKE_SOURCE_DIR}/install/glfw/lib/")
> >==========
> >
> >Then I include it in my project like so:
> >
> >==========
> >find_library(GLFW_LIB_D  glfw3_d ${GLFW_LIBRARY_DIR})
> >find_library(GLFW_LIB    glfw3   ${GLFW_LIBRARY_DIR})
> >
> >include_directories(${GLFW_INCLUDE_DIR})
> >
> >add_executable(vk_test
> >  src/vulkan_test.cpp
> >  )
> >target_link_libraries(vk_test debug ${GLFW_LIB_D} optimized
> >${GLFW_LIB})
> >add_dependencies(vk_test glfw)
> >==========
> >
> >As you can see, I depend on the libraries compiled by the external
> >project
> >glfw. Unfortunately, when I first configure the project, CMake
> >complains
> >that it cannot find the libraries specified by ${GLFW_LIB_D} and
> >${GLFW_LIB} variables.
> >
> >Of course, this is because CMake did not begin cloning, configuring and
> >building the glfw project. That only happens AFTER my project has been
> >configured and starts building. This becomes a chicken and the egg
> >problem.
> >
> >Currently, my solution is to add dummy .lib files so that I can at
> >least
> >configure and generate my project. My question is, am I approaching
> >this
> >problem in the wrong way? If yes, what is the correct way to add a
> >dependency to an external project and have it clone/configure/build
> >BEFORE
> >the "find_library" call?
>
> --
> Diese Nachricht wurde von meinem Android-Mobiltelefon mit K-9 Mail
> gesendet.
> --
>
> 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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/cmake/attachments/20170113/292d382e/attachment.html>


More information about the CMake mailing list