On Mon, Sep 21, 2015 at 10:39 PM, Golebiewski, Jakub
<jakub.golebiew...@dnvgl.com> wrote:
> This may be a solution, I will check this asap.
>
> This should be clearer, I have something like this:
>
> Main Project - PROJECT()
>                 \Sub Project 1 - PROJECT()
>                                \target 1 - ADD_LIBRARY()
>                                \target 2 - ADD_LIBRARY()
>                 \Sub Project 2 - PROJECT()
>                                \target 3 - ADD_LIBRARY()
>                                \target 4 - ADD_LIBRARY()
>                 \Sub Project 3 - PROJECT()
>                                \target 5 - ADD_LIBRARY()
>                                \target 6 - ADD_LIBRARY()
>
> Targets  5 and 6 depend on 1, 2, 3 and 4.
>
> Now when I run cmake on Main Project I will get .sln files for Main Project 
> and each Sub Project.
> .sln file for Sub Project 3 will contain all the targets (So I will get .sln 
> with projects for target 1 – 6 in VS terminology).
> What I need to have is for Sub Project 3 to have only target 5 and target 6 
> in .sln without dependencies from other Sub Projects.
>
> So I worry that with your solution I will get unknown targets error? Is there 
> any way to ignore missing targets errors?
>

For each invokation of cmake you only get one .sln file.  It's name
comes from the last PROJECT in the root CMakeLists.txt
If you run cmake for each subproject I suppose one could set a variable like

IF( NOT PROJECT_ROOT )
   SET( PROJECT_ROOT SomeName )
ENDIF()

and later test
if( PROJECT_ROOT STREQUAL SomeName )
   add_subdirectory( "../Sub Project3" Sub3 )
endif()

or the not of that and don't include the others...

and the root would unconditionally add_subdirectory for all of those...

I'd probably just make like
OPTION( BUILD_EXTRAS "enable building extras" OFF )
in the root and test for BUILD_EXTRAS to include other things... and
make them cmake configuration options that would show as check boxes
in cmake-gui.

In my case I have a core set of libraries that get built and then
various projects that use those libraries.  I build it in two steps in
two separate build directories using two separate cmake invoations...
and then I have a super-project that can build the core plus all
extras in one fell swoop by just building each one.  (uses custom
macro that's a few dozen lines to do each build)



> Thanks for help,
> JG
>
> -----Original Message-----
> From: J Decker [mailto:d3c...@gmail.com]
> Sent: Monday, September 21, 2015 4:50 PM
> To: Golebiewski, Jakub
> Cc: cmake@cmake.org
> Subject: Re: [CMake] How to create a custom solution with Visual Studio 2010 
> generator?
>
> CMake's PROJECT directive maps to 'Solution'  (should only be one
> project() per chain) ... use set( PROJECT projectname) and then reference 
> ${PROJECT} later instead of ${PROJECT_NAME} for easy conversion.
>
> add_library, add_executable map to 'project'
>
> from http://www.cmake.org/Wiki/CMake_Useful_Variables
>
> you can wrap the projects you want to omit with If's
>
> if( NOT MSVC10 )
>    add_library( one I don't want in 2010) endif( NOT MSVC10 )
>
>
>
>
> On Sun, Sep 20, 2015 at 11:20 PM, Golebiewski, Jakub 
> <jakub.golebiew...@dnvgl.com> wrote:
>> Hi,
>>
>>
>>
>> I’m trying to create a solution with custom set of projects (in VS
>> sense) for Visual Studio 2010.
>>
>> I have a top level CMakeLists.txt with PROJECT() declared and then
>> several CMakeLists.txt below in a tree also with PROJECT() in each of them.
>>
>> However for lower level PROJECT() directives I get all the targets
>> that I specify in CMakeLists.txt and all the targets that they depend on.
>>
>>
>>
>> My goal is to have a solution only with a specific set of targets,
>> without dependencies.
>>
>>
>>
>> Is there a  way to do that in cmake?
>>
>>
>>
>> Thanks for help,
>>
>> Jakub
>>
>>
>> **********************************************************************
>> **************** This e-mail and any attachments thereto may contain
>> confidential information and/or information protected by intellectual
>> property rights for the exclusive attention of the intended addressees
>> named above. If you have received this transmission in error, please
>> immediately notify the sender by return e-mail and delete this message
>> and its attachments. Unauthorized use, copying or further full or
>> partial distribution of this e-mail or its contents is prohibited.
>> **********************************************************************
>> ****************
>>
>> --
>>
>> 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
>
> **************************************************************************************
> This e-mail and any attachments thereto may contain confidential information 
> and/or information protected by intellectual property rights for the 
> exclusive attention of the intended addressees named above. If you have 
> received this transmission in error, please immediately notify the sender by 
> return e-mail and delete this message and its attachments. Unauthorized use, 
> copying or further full or partial distribution of this e-mail or its 
> contents is prohibited.
> **************************************************************************************
-- 

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

Reply via email to