Создание кроссплатформенной процедуры CMake для Unix
Я написал небольшой модуль CMake для, ну, не важно, для чего. Дело в том, что он действует следующим образом:
- Когда вызывается соответствующая функция CMake, сценарий оболочки с относительным путем
scripts/whatever.sh
(в каталоге проекта). - Сценарий оболочки
cat
'sa' here-file ', содержащий программу на C для компилятора C, найденную CMake (с откатом наcc
) - Программа компилируется, связывается и запускается, производя некоторый текст
- Выходной текст сохраняется как переменная CMake
Это относительно устойчиво в Unix-подобных системах, где cat
а также bash
доступны и когда разделитель пути /
, (Могут быть и другие предположения, которые я игнорирую.) Но - я хочу, чтобы это работало и в Windows, и в других системах. Как мне это сделать?
Заметки:
- В случае, если это актуально: скрипт оболочки и модуль CMake.
- Я могу использовать C++ вместо C, если это поможет.
1 ответ
Вы можете использовать сценарии CMake для кроссплатформенности. Многие вещи могут быть выполнены непосредственно в CMakeLists.txt
и из него включены скрипты:
Поддержка "Здесь в документе" в CMake не самая лучшая, но не очень сложно сохранить текст небольшой программы в переменной CMake.
execute_process
может запускать внешние программы из скрипта CMake и сохранять выходные данные этой программы в переменной CMake. Также,try_compile
или жеtry_run
может быть полезно в некоторых сценариях.