[CMake] Forcing project to be included in a solution?

Robert Dailey rcdailey.lists at gmail.com
Mon Apr 9 14:45:35 EDT 2012


A lot of people on my team do not want to open the "global" project though.
It includes everything, even the parts they don't want to build. Mostly
it's a clutter issue, I think. For example, there may be 200 projects but
they only care about 100 of those (all dependencies included). The other
100 are usually DLL/executable projects for another team that shares the
same scripts for their own projects.

On Mon, Apr 9, 2012 at 11:52 AM, Michael Jackson <
mike.jackson at bluequartz.net> wrote:

> Is it possible for you to add a "project(...)" command in your most outer
> CMakeLists.txt file? I do this all the time where I have a project that has
> lots of sub-projects like yours, even git-submodules, and I have a single
> .sln file that has ALL the various projects that CMake has found.
>
> ---
> Mike Jackson                 www.bluequartz.net
>
> On Apr 5, 2012, at 11:31 AM, Robert Dailey wrote:
>
> > Thanks for the help guys.
> >
> > I didn't realize it would be relevant, but I guess the order in which I
> call things matters. For example, ignoring the directory structure I use,
> the general order of my commands are as follows:
> >
> > # This is done in the Root CMakeLists.txt
> > add_custom_target( Foo ... )
> >
> > # Several nested subdirectories down...
> > project( Bar )
> > add_executable( Bar )
> >
> > I guess this order has an affect? I assume all of the add_*() commands
> need to occur *after* the project() call to be implicitly added to that
> solution. Unfortunately my structure cannot change, so that's why I was
> trying to use dependencies to get the job done.
> >
> >
> > On Thu, Apr 5, 2012 at 8:58 AM, David Cole <david.cole at kitware.com>
> wrote:
> > This all assumes everything is in the same CMakeLists.txt.
> >
> > I suspect since Robert is not already seeing the proper behavior that
> > he has complex cross-directory target and library distribution, but
> > wants to see them all in the sub-directory sln files, too... (maybe?)
> >
> >
> > On Wed, Apr 4, 2012 at 9:48 PM, Fraser Hutchison
> > <fraser.hutchison at gmail.com> wrote:
> > > David's original answer does what you require.
> > >
> > > Simply include add_custom_target(Foo ...) and don't include
> > > add_dependencies(Bar Foo).
> > >
> > > If your project is also called Bar, then Bar.sln will include
> Foo.vcproj and
> > > Bar.vcproj, but Foo will not be built when invoking "Build Solution".
> > >
> > > Cheers,
> > >
> > > Fraser.
> > >
> > >
> > >
> > >
> > > On 04/04/2012 21:33, Robert Dailey wrote:
> > >
> > > Sorry I think we are not on the same page.
> > >
> > > My custom target is: "Foo"
> > > My C++ executable target is: "Bar"
> > >
> > > I don't want Bar depend on Foo, because I do not want Foo's commands to
> > > execute when I build Bar. However, because Bar does not depend on Foo,
> > > Foo.vcproj will not be part of Bar.sln. I need a way to make sure that
> > > Foo.vcproj opens with Bar.sln without creating that dependency.
> > >
> > > I hope this makes a little more sense.
> > >
> > > On Wed, Apr 4, 2012 at 2:01 PM, David Cole <david.cole at kitware.com>
> wrote:
> > >>
> > >> Your original message said you didn't want to make it a dependency.
> > >> So, why then use "add_dependencies" ...?
> > >>
> > >>
> > >> On Wed, Apr 4, 2012 at 3:00 PM, David Cole <david.cole at kitware.com>
> wrote:
> > >> > Well, add_dependencies means that the custom target will be built
> > >> > *before* the target that needs it. So it becomes part of "ALL" if
> the
> > >> > other target is part of "ALL".
> > >> >
> > >> > I thought nothing depended on it, that's why I offered the leave out
> > >> > "ALL" advice. If something depends on it, then it's going to be
> > >> > executed before the thing that depends on it...
> > >> >
> > >> >
> > >> >
> > >> > On Wed, Apr 4, 2012 at 2:35 PM, Robert Dailey <
> rcdailey.lists at gmail.com>
> > >> > wrote:
> > >> >> I add the custom targets as a dependency with add_dependencies(),
> and I
> > >> >> create the targets with add_custom_target(), I don't specify "ALL".
> > >> >>
> > >> >> In my test with Visual Studio 2008, building the parent project
> results
> > >> >> in
> > >> >> these custom targets being built as well. According to your
> > >> >> instruction,
> > >> >> this should not happen, correct?
> > >> >>
> > >> >> On Wed, Apr 4, 2012 at 12:10 PM, David Cole <
> david.cole at kitware.com>
> > >> >> wrote:
> > >> >>>
> > >> >>> Sure, just use add_custom_target without the "ALL" argument. If
> you
> > >> >>> don't use "ALL", then the project is completely disconnected from
> > >> >>> ALL_BUILD and everything else, and will only be triggered when you
> > >> >>> explicitly build that target/project.
> > >> >>>
> > >> >>>
> > >> >>> HTH,
> > >> >>> David
> > >> >>>
> > >> >>>
> > >> >>> On Wed, Apr 4, 2012 at 12:53 PM, Robert Dailey
> > >> >>> <rcdailey.lists at gmail.com>
> > >> >>> wrote:
> > >> >>> > Hi,
> > >> >>> >
> > >> >>> > I have a custom target that just runs some commands that have
> > >> >>> > nothing to
> > >> >>> > do
> > >> >>> > with building source. For convenience, when generating visual
> studio
> > >> >>> > projects, I'd like for that target to be included in the SLN
> > >> >>> > generated
> > >> >>> > by
> > >> >>> > project() but I don't want to make it a dependency, since that
> would
> > >> >>> > force
> > >> >>> > it to build when I build any other project in the solution (I
> > >> >>> > think).
> > >> >>> >
> > >> >>> > Is there a way to make a vcproj be included in a sln without it
> > >> >>> > building
> > >> >>> > as
> > >> >>> > part of the dependency chain?
> > >> >>> >
> > >> >>> > Thanks in advance.
> > >> >>> >
> > >> >>> > --
> > >> >>> >
> > >> >>> > 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/20120409/a366dd5f/attachment.htm>


More information about the CMake mailing list