Example simple usages from my personal projects: https://github.com/LB--/events/blob/499ba78b923b40f77cc832b6a5d414240209ac96/CMakeLists.txt https://github.com/LB--/simple-platformer/blob/1bba3dd2d8ed1cdae74ce1b77c4ab99878fa59a6/CMakeLists.txt
More complex usage in hunter: https://github.com/ruslo/hunter With ExternalProject you can have it either download from version control / source archive, or you can use a local existing folder. I think in your case you just need to point it to your existing project folders and forward the appropriate arguments. There is a lot of customizability to it (customizing each step, for example). If you want I could make an example exactly like your provided example directory structure, but I think both of my personal usages closely match what you are wanting to do. On Tue, Mar 8, 2016 at 7:02 PM, Muhammad Osama <osam...@gmail.com> wrote: > Thank you for your suggestion Nicholas, I have never used > ExternalProject_Add before and can't find a related example to my project. > Would you know an example that uses it? > > On Tue, Mar 8, 2016 at 10:38 AM, Nicholas Braden < > nicholas11bra...@gmail.com> wrote: > >> Have you looked into ExternalProject_Add? It allows just using a local >> path instead of downloading a remote repository: >> >> https://cmake.org/cmake/help/latest/module/ExternalProject.html >> >> On Tue, Mar 8, 2016 at 12:12 PM, Muhammad Osama <osam...@gmail.com> >> wrote: >> >>> Hi Jan, >>> >>> Thank you for your reply, I am in the similar situation, have a very >>> similar implementation using *target_*** *but since I don't do that for >>> ALL the dependencies, I am unable to cmake or compile individual projects >>> in the sub directories. So, few questions; >>> >>> 1. This still requires me to run cmake on the root CMakeLists.txt to set >>> the flags and what not before I run the sub project to make it correct? >>> 1a. If so, how can I make the CMakeLists.txts in the sub directories >>> independent of the root one if I want to just compile the sub-project and >>> not cmake the whole thing? >>> 2. Another question is that your implementation, does it not include a >>> config file? In theory you're copy pasting most of the dependencies in the >>> CMakeLists.txt of root into the sub-dir ones? Is there a better way to do >>> this? >>> >>> Thank you! >>> >>> On Tue, Mar 8, 2016 at 2:02 AM, 🐋 Jan Hegewald <jan.hegew...@awi.de> >>> wrote: >>> >>>> Hi Muhammad, >>>> >>>> > On 08.03.2016, at 06:17, Muhammad Osama <osam...@gmail.com> wrote: >>>> > >>>> > Hi, I am new to cmake and really hope am doing this correctly. I >>>> asked stackoverflow but didn't get a good enough answer for my specific >>>> problem here; >>>> > >>>> > If I want root/sub-directories/ as separate sub-projects that can be >>>> compiled using the individualCMakeLists.txts in their folders I find myself >>>> literally copy pasting almost the entire root file CMakeLists.txt per >>>> sub-directory. >>>> > >>>> > I was wondering if there is a better way to have a main project and >>>> then sub-projects that get the shared dependencies from main project and >>>> can be compiled without cmake-ing the root CMakeLists.txt. My directory >>>> structure is; >>>> > >>>> > CMakeLists.txt (root project) >>>> > | __ sub_dir-1 >>>> > | __ | __ CMakeLists.txt (sub-project) >>>> > | __ sub_dir-2 >>>> > | __ | __ CMakeLists.txt (sub-project) >>>> > | __ sub_dir-3 >>>> > | __ | __ CMakeLists.txt (sub-project) >>>> >>>> I basically have the same project structure as you describe. I am also >>>> not sure what the best practice is here, but this is what I currently do: >>>> I set all dependencies where they are required: right in the local >>>> CMakeLists.txt, i.e. sub_dir-1/CMakeLists.txt. Then "export" all required >>>> include/define/compiler flags dependencies via INTERFACE or PUBLIC flags of >>>> the various target_*** cmake functions, as appropriate. The sub-projects >>>> are added via add_subdirectory in cmake. >>>> This way I can build each CMakeLists.txt individually if needed but >>>> still have everything DRYish. >>>> >>>> HTH, >>>> Jan >>>> >>>> -- >>>> >>>> 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 >>>> >>> >>> >>> >>> -- >>> *Muhammad Osama* >>> Graduate Student >>> Department of Electrical and Computer Engineering >>> University of California, Davis >>> >>> -- >>> >>> 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 >>> >> >> > > > -- > *Muhammad Osama* > Graduate Student > Department of Electrical and Computer Engineering > University of California, Davis >
-- 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