[CMake] exclude build project from solution

David Cole david.cole at kitware.com
Wed Aug 10 11:04:41 EDT 2011


Looks to me like the one chunk of code that actually refers to the
target property:

  if(target->GetPropertyAsBool("EXCLUDE_FROM_DEFAULT_BUILD"))
    {
    return false;
    }

should be changed to:

  if(target->GetPropertyAsBool("EXCLUDE_FROM_DEFAULT_BUILD") ||
        target->GetPropertyAsBool("EXCLUDE_FROM_ALL"))
    {
    return false;
    }

The EXCLUDE_FROM_DEFAULT_BUILD reference has been there since Nov.
2006 in this commit by Bill:

  http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b0bc59f7

EXCLUDE_FROM_ALL is referenced in many, many more places in the code,
but the intent behind the properties seems (to me) to be identical.
We'll see if Bill or Brad objects to this or has additional input....
:-)


David


On Tue, Aug 9, 2011 at 8:09 PM, Johan Björk <phb at spotify.com> wrote:
> Dave, Bill? Anyone know what the difference is intended to be between
> EXLUDE_FROM_ALL vs EXCLUDE_FROM_DEFAULT_BUILD?
> /Johan
>
> On Mon, Aug 1, 2011 at 6:57 PM, Johan Björk <phb at spotify.com> wrote:
>>
>> And another update while at it.
>> The following cmake file illustrates the issue:
>> FILE(WRITE foo.c "")
>> add_library(foo EXCLUDE_FROM_ALL foo.c)
>> set_target_properties(foo PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD 1)
>> FILE(WRITE foobar.c "")
>> add_executable(foobar foobar.c)
>> target_link_libraries(foobar foo)
>> This works fine in the makefile (and xcode) generator, but fails in MSVC
>> 2008 with
>> 1>------ Skipped Build: Project: foo, Configuration: Debug Win32 ------
>> 1>Project not selected to build for this solution configuration
>> 2>------ Build started: Project: foobar, Configuration: Debug Win32 ------
>> 2>Compiling...
>> 2>foobar.c
>> 2>Compiling manifest to resources...
>> 2>Microsoft (R) Windows (R) Resource Compiler Version 6.0.5724.0
>> 2>Copyright (C) Microsoft Corporation.  All rights reserved.
>> 2>Linking...
>> 2>LINK : fatal error LNK1104: cannot open file 'Debug\foo.lib'
>> 2>Build log was saved at "file://c:\Users\Felix Bruns\Documents\Visual
>> Studio 2008\Projects\a'\foobar.dir\Debug\BuildLog.htm"
>> 2>foobar - 1 error(s), 0 warning(s)
>> 3>------ Skipped Build: Project: ALL_BUILD, Configuration: Debug Win32
>> ------
>> 3>Project not selected to build for this solution configuration
>> ========== Build: 0 succeeded, 1 failed, 1 up-to-date, 2 skipped
>> ==========
>>
>> I'll file a bug.
>>
>>
>>
>> On Mon, Aug 1, 2011 at 5:15 PM, Johan Björk <phb at spotify.com> wrote:
>>>
>>> and I just found
>>>
>>> The EXCLUDE_FROM_DEFAULT_BUILD property is used by the visual studio
>>> generators. If it is set to 1 the target will not be part of the default
>>> build when you select "Build Solution".
>>>
>>> Anyone know why it is different from EXLUDE_FROM_ALL ?
>>>
>>> -Johan
>>>
>>> On Mon, Aug 1, 2011 at 5:05 PM, Johan Björk <phb at spotify.com> wrote:
>>>>
>>>> Hi all,
>>>> Anyone know anything about this? I'm seeing the same issue with MSVC
>>>> 2008 + cmake 2.8(.?)
>>>> add_library(foo .. EXCLUDE_FROM_ALL ..)
>>>> -Johan
>>>>
>>>> On Tue, May 3, 2011 at 4:59 PM, Andrea Galeazzi <Galeazzi at korg.it>
>>>> wrote:
>>>>>
>>>>> I've a project made up of multiple executable target:
>>>>> add_executable(TARGET_NAME1 ${SOURCES1})
>>>>> add_executable(TARGET_NAME2 ${SOURCES2})
>>>>> add_executable(TARGET_NAME3 ${SOURCES3})
>>>>>
>>>>> ...........
>>>>> Now I'd like to build just only TARGET_NAME1 when I press F7 (build
>>>>> solution) in visual studio. I tried to add
>>>>> set_target_properties(TARGET_NAME2 PROPERTIES EXCLUDE_FROM_ALL "TRUE")
>>>>> set_target_properties(TARGET_NAME3 PROPERTIES EXCLUDE_FROM_ALL "TRUE")
>>>>> ......
>>>>> but it only remove the dependency from ALL_BUILD project.
>>>>> So, is it possible to generate a such kind of solution?
>>>>> _______________________________________________
>>>>> 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
>


More information about the CMake mailing list