[CMake] Spaces in conditional output of generator expressions

Neil Carlson neil.n.carlson at gmail.com
Sun Jun 3 10:10:58 EDT 2018


Something not immediately obvious to me, and perhaps not to others that
might come across this thread, is that all spaces in the option string need
to be replaced with a semicolon, and not just those that separate options
(with Linux/make at least). For example  an option that takes an argument
'-assume realloc_lhs'. If you do this:

BAD: add_compile_options("$<$<COMPILE_LANGUAGE:Fortran>:-assume
realloc_lhs>")

you get a single quoted token "-assume realloc_lhs" on the compile line
which the compiler doesn't understand. The correct thing is

GOOD: add_compile_options("$<$<COMPILE_LANGUAGE:Fortran>:-assume;realloc_lhs>")


On Sun, Jun 3, 2018 at 7:33 AM Neil Carlson <neil.n.carlson at gmail.com>
wrote:

>
> On Sun, Jun 3, 2018 at 7:08 AM Marc CHEVRIER <marc.chevrier at gmail.com>
> wrote:
>
>> [...]
>> GOOD: target_compile_options(someTarget PRIVATE
>>  "$<$<COMPILE_LANGUAGE:CXX>:-Wall;-Wextra>")
>>
>
> Ah, that's it. Never occurred to me to quote the whole thing, thinking
> that would turn the generator expression into a literal string and not be
> interpreted.  Thanks!
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://cmake.org/pipermail/cmake/attachments/20180603/05d9595f/attachment-0001.html>


More information about the CMake mailing list