Re: [CMake] --graphviz and generator expressions

2014-06-05 Thread Brad King
On 06/05/2014 02:08 PM, Andrew Fuller wrote:
 After more investigation it appears --graphviz does handle generator
 expressions ... partially.  In particular it seems to get tripped
 up with $JOIN:...
[snip]
 What is the proper way to generate the graph for a particular 
 configuration?

The graphviz option has not been well maintained.  The notion of
one target depending on another is not as clear-cut these days
as it was when the graphviz option was first implemented.  The
graphviz option implementation still gets dependencies from some
outdated internal APIs that continue to exist only for some
backward compatibility features (policy OLD behaviors).

A non-trivial overhaul of the graphviz option implementation will
be needed to make it useful on projects using modern features.

-Brad

-- 

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://www.cmake.org/mailman/listinfo/cmake


Re: [CMake] --graphviz and generator expressions

2014-06-05 Thread Andrew Fuller
Sorry, I meant to keep this on the mailing list.  Hit reply without
checking.

On Thu, Jun 5, 2014 at 1:33 PM, Andrew Fuller mactalla.ob...@gmail.com
wrote:

 A non-trivial overhaul of the graphviz option implementation will
 be needed to make it useful on projects using modern features.


 Okay, I understand.

 As I've continued to investigate this I think my issue is actually deeper.

 When setting compiler definitions I can set a list within a generator
 expression and the entire set is handled correctly.

 eg:
 target_compile_definitions( my_target PRIVATE
  $$PLATFORM_ID:Windows:winone;wintwo
  $$PLATFORM_ID:Linux:linuxone;linuxtwo )
 gives -Dlinuxone -Dlinuxtwo on the command line under Linux.

 However, trying to do the same with target_link_libraries yields different
 results:
 target_link_libraries( my_target PRIVATE
  $$PLATFORM_ID:Windows:win.1;win.2
  $$PLATFORM_ID:Linux:lin.1;lin.2 )
 gives a link line of -lwin.2 -llin.1 -llin.2

 As I was experimenting I discovered that $JOIN:... provides an
 interesting perspective into the issue:
 target_link_libraries( my_target PRIVATE
  $$PLATFORM_ID:Windows:$JOIN:win.1;win.2, -I
  $$PLATFORM_ID:Linux:lin.1;lin.2 )
 gives a link line of -llin.1 -llin.2
 $JOIN... seems to correctly group the list so the elements don't leak
 out of the generator expression.  At least when the condition evaluates to
 0.

 However,
 target_link_libraries( my_target PRIVATE
  $$PLATFORM_ID:Windows:$JOIN:win.1;win.2, -I
  $$PLATFORM_ID:Linux:$JOIN:lin.1;lin.2, -l )
 Gives
 CMake Error:

   Error evaluating generator expression:

 $JOIN:lin.1

   $JOIN expression requires 2 comma separated parameters, but got 1
   instead.

 It appears in this instance as though the list is being split before the
 generator expression is being evaluated.  $JOIN... seems to function as
 expected when used in target_compile_definitions.

 Is there a limitation in target_link_libraries I should be aware of?  I
 didn't find anything obvious in the documentation.
 I should mention I'm running 3.0.0-rc3 and set cmake_policy( VERSION 3.0 ).

 Thanks,
 -Andrew



-- 

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://www.cmake.org/mailman/listinfo/cmake