Makes sense, thank you so much Nicholas! I will give this a try. On Tue, Mar 8, 2016 at 5:19 PM, Nicholas Braden <nicholas11bra...@gmail.com> wrote:
> Yep, just make each project act independently with no knowledge of the > superproject, and have the superproject glue it all together as a > convenience for the user if they don't want to manually build things > separately or if they don't have existing installs. That's what I am doing > with my projects. > > On Tue, Mar 8, 2016 at 7:17 PM, Muhammad Osama <osam...@gmail.com> wrote: > >> Wow, this is powerful! Question; Will I be able to compile the >> sub-project individually? >> Because as I see this is what we will use in the root/CMakeLists.txt, but >> what about the sub-dirs which I really want to be "independent" if the user >> wants. >> >> On Tue, Mar 8, 2016 at 5:13 PM, Nicholas Braden < >> nicholas11bra...@gmail.com> wrote: >> >>> 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 >>>> >>> >>> >> >> >> -- >> *Muhammad Osama* >> Graduate Student >> Department of Electrical and Computer Engineering >> University of California, Davis >> > > -- *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