Как выполнить проверки перед выполнением скрипта конфигурации cmake? - PullRequest
2 голосов
/ 30 ноября 2011

Я застрял прямо сейчас с некоторыми проблемами, касающимися cmake. Так как это уже известная проблема (см. здесь ), вызов генератора MinGW Makefile завершится неудачно, если где-то в среде% PATH% есть sh.exe. Это часто бывает, если у людей есть параллельная установка cygwin или msys. Однако я хотел бы создать обходной путь, который ищет в% PATH% исполняемый файл с именем sh.exe и, если такой путь существует, его следует удалить из переменной среды. Конечно, я могу сделать это с помощью небольшой предварительно скомпилированной c-программы и пакетного сценария ( текущее решение ), но для этого требуется, чтобы пользователь выполнил сценарий перед вызовом cmake, что немного неудобно. Я ожидал сделать что-то подобное в корне CMakeLists.txt

if (MINGW)
    "scan for sh.exe and remove eventually"
endif (MINGW)

Но cmake сначала читает CMakeLists.txt после выполнения его предварительных конфигураций, что в этом случае может привести к сбою, поскольку среда пути не была изменена, чтобы разрешить установку MinGW. Есть ли способ выполнить такие проверки и изменить% PATH% до выполнения конфигурации cmake?

И да, я мог бы также написать еще один пакетный скрипт, который изменяет среду и затем вызывает cmake, но это был бы скорее последний вариант, который я бы рассмотрел для моих целей:).

Заранее спасибо.

1 Ответ

0 голосов
/ 15 апреля 2012

Да, можно с файлом CMake Toolchain (обычно используется для кросс-компиляции).Файл цепочки инструментов выполняется перед тестированием компилятора.

Подробнее о файле цепочки инструментов .Сам файл является обычным файлом CMake, поэтому ваш псевдокод в вопросе должен работать нормально.

cmake -DCMAKE_TOOLCHAIN_FILE=fixmingw.cmake

Очевидным недостатком является, конечно, то, что вам все еще нужно, чтобы пользователь запускал команду, отличную от «нормальной».CMake команда, я не думаю, что есть способ обойти это.

...