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

Robert Dailey rcdailey.lists at gmail.com
Wed Apr 11 12:46:54 EDT 2012


I have created a feature request for this here:
http://public.kitware.com/Bug/view.php?id=13122

On Mon, Apr 9, 2012 at 1:45 PM, Robert Dailey <rcdailey.lists at gmail.com>wrote:

> 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/20120411/a6b85db3/attachment.htm>


More information about the CMake mailing list