Выражение генератора оценивает переменную WIN32 в true, даже не в Windows - PullRequest
0 голосов
/ 22 ноября 2018

Я работаю в Ubuntu, и вот часть моего кода CMake (сомнительная часть в последнем предложении):

include(ExternalProject)
ExternalProject_Add(fftw3_external
  URL
    http://www.fftw.org/fftw-3.3.8.tar.gz
  URL_HASH
    MD5=8aac833c943d8e90d51b697b27d4384d
  DOWNLOAD_NO_PROGRESS
    1
  UPDATE_COMMAND
    ""
  LOG_CONFIGURE
    1
  LOG_BUILD
    1
  LOG_INSTALL
    1
  CMAKE_ARGS
    -DCMAKE_INSTALL_PREFIX=${STAGED_INSTALL_PREFIX}
    -DBUILD_TESTS=OFF
  CMAKE_CACHE_ARGS
    -DCMAKE_C_FLAGS:STRING=$<$<BOOL:WIN32>:-DWITH_OUR_MALLOC>
  )

После настройки я заглядываю внутрь соответствующего файла кэша, fftw3_external-cache.cmake, и это показывает:

set(CMAKE_C_FLAGS "-DWITH_OUR_MALLOC" CACHE STRING "Initial cache" FORCE)

Но это содержимое соответствует истинному WIN32.Почему это так?

1 Ответ

0 голосов
/ 22 ноября 2018

В выражении генератора

$<BOOL:WIN32>

CMake оценивает "WIN32" как строку , а не как переменную .Поскольку эта строка не соответствует ложному шаблону, она оценивается как ИСТИНА.

Вам необходимо разыменовать переменную для проверки ее значения:

$<BOOL:${WIN32}>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...