Я застрял прямо сейчас с некоторыми проблемами, касающимися 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, но это был бы скорее последний вариант, который я бы рассмотрел для моих целей:).
Заранее спасибо.