Создание кроссплатформенной процедуры CMake для Unix

Я написал небольшой модуль CMake для, ну, не важно, для чего. Дело в том, что он действует следующим образом:

  • Когда вызывается соответствующая функция CMake, сценарий оболочки с относительным путем scripts/whatever.sh (в каталоге проекта).
  • Сценарий оболочки cat‘here-file’, содержащий программу на C для компилятора C, найденную CMake (с откатом на cc)
  • Программа компилируется, связывается и запускается, производя некоторый текст
  • Выходной текст сохраняется как переменная CMake

Это относительно устойчиво в Unix-подобных системах, где cat а также bash доступны и когда разделитель пути /, (Могут быть и другие предположения, которые я игнорирую.) Но — я хочу, чтобы это работало и в Windows, и в других системах. Как мне это сделать?

Заметки:

1

Решение

Вы можете использовать сценарии CMake для кроссплатформенности. Многие вещи могут быть выполнены непосредственно в CMakeLists.txt и из него включены скрипты:

  • Поддержка «Здесь в документе» в CMake не самая лучшая, но не очень сложно сохранить текст небольшой программы в переменной CMake.

  • execute_process может запускать внешние программы из скрипта CMake и сохранять выходные данные этой программы в переменной CMake. Также, try_compile или же try_run может быть полезно в некоторых сценариях.

1

Другие решения

Других решений пока нет …