On 10/20/2011 05:41 PM, Robert Dailey wrote:
> On Thu, Oct 20, 2011 at 2:36 AM, Rolf Eike Beer <e...@sf-mail.de
> <mailto:e...@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

Reply via email to