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