[CMake] CMAKE_MFC_FLAG not working in functions

Robert Dailey rcdailey at gmail.com
Thu Oct 20 12:59:48 EDT 2011


Let me ask this,

What would be the parent of a function located in the root CMakeLists file
but called from a subordinate CMakeLists file?

---------
Robert Dailey


On Thu, Oct 20, 2011 at 11:55 AM, Michael Wild <themiwi at gmail.com> wrote:

> On 10/20/2011 05:41 PM, Robert Dailey wrote:
> > On Thu, Oct 20, 2011 at 2:36 AM, Rolf Eike Beer <eike at sf-mail.de
> > <mailto:eike at sf-mail.de>> wrote:
> >
> >     > I have a function defined very high up in the directory tree at
> >     the root
> >     > CMakeLists file. Several levels below it, I have another
> >     CMakeLists file
> >     > that I call that function from.
> >     >
> >     > The function sets CMAKE_MFC_FLAG to 2. I notice that this flag gets
> >     > ignored
> >     > when it is set inside of the function in question. If I set the
> flag
> >     > outside
> >     > of the function, in the lowest level CMakeLists file, it works.
> This
> >     > property seems somehow tied to the directory itself, but I can't
> >     figure
> >     > out
> >     > if this is a feature or a bug.
> >     >
> >     > This behavior isn't very flexible as I'd like to make the details
> of
> >     > configuring an MFC compatible project transparent to the lower
> level
> >     > CMakeLists scripts. Hiding away the flag and how it needs to be
> >     set is a
> >     > big
> >     > part of this, but I can't do it.
> >     >
> >     > Anyone know how I can make this work?
> >
> >     A function creates a new variable scope, i.e. everything you set in
> >     there
> >     will be reset once you leave the function. Have a look at SET(...
> >     PARENT_SCOPE) for this.
> >
> >
> > Not even that worked, unfortunately.
> >
> > Basically from my function I do:
> >
> > set( CMAKE_MFC_FLAG 2 )
> > add_executable( ... )
> >
> > Since I'm setting it right before the add_executable() call, I would
> > think that scope has nothing to do with it.
>
> No, the add_executable() call does not evaluate the variable. It only
> gets evaluated *after* the processing of the current CMakeLists.txt
> file. If using set(CMAKE_MFC_FLAG 2 PARENT_SCOPE) really doesn't work,
> IMHO that would be a bug. The only work-around would be to use a macro
> instead (where you don't need the PARENT_SCOPE at all).
>
> Michael
>
> --
>
> 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/20111020/20e804c7/attachment-0001.htm>


More information about the CMake mailing list