Я использую CMake для генерации IDE / make-файлов своих проектов, но мне все еще нужно вызывать пользовательские «скрипты» для манипулирования скомпилированными файлами или даже для генерации кода.
В предыдущих проектах я использовал Python, и это было нормально, но теперь у меня серьезные проблемы с управлением множеством зависимостей в двух очень больших проектах, над которыми я работаю, поэтому я хочу минимизировать зависимости везде.
Кто-то предложил мне использовать C ++ для написания сценариев сборки вместо того, чтобы просто добавлять языковые зависимости. Сами проекты уже используют C ++, поэтому я вижу несколько преимуществ:
- чтобы построить весь проект, понадобился бы только компилятор C ++ и CMake, больше ничего (все остальные зависимости - C или C ++);
- Безопасность типов C ++ (при использовании современного C ++) делает все проще, чтобы «исправить»;
- это также язык, который я знаю лучше, так что мне легче с ним работать, даже если я могу написать хороший код на Python;
- потенциальный выигрыш в скорости выполнения (но я не думаю, что это будет ощутимо);
Тем не менее, я думаю, что могут быть некоторые недостатки, и я не уверен в реальном воздействии, поскольку я еще не пробовал:
- возможно, потребуется больше времени для написания кода (это говорит о том, что я не уверен, потому что я достаточно эффективен в C ++, чтобы написать что-то, что работает быстро, поэтому, возможно, для этой системы это не будет так долго писать) (время компиляции не должно ' это не проблема в этом случае);
- Я должен предположить, что все текстовые файлы, которые я буду читать как входные данные, находятся в UTF-8, я не уверен, что его можно легко проверить во время выполнения в C ++, и язык не проверит его для вас;
- библиотеки на C ++ сложнее в управлении, чем на языках сценариев;
Мне не хватает опыта и дальновидности, поэтому, может быть, мне не хватает преимуществ и недостатков. Итак, вопрос: имеет ли смысл использовать C ++ для этого? у вас есть опыт, чтобы сообщить, и вы видите преимущества и недостатки, которые могут быть важными?
источник
Ответы:
Просто используйте Python.
Я занимаюсь разработкой на C ++ и делаю свои сценарии сборки на Python, и мне было бы больно делать сценарии сборки на C ++:
Что касается преимуществ, которые вы перечислите для C ++:
источник
Я считаю, что это вопрос конкретного случая. Я бы сказал, что нет правильного ответа, имеет ли смысл использовать C ++ для сценариев сборки, или нет. Единственный способ понять это - попробовать это на практике.
Лично я бы увидел, что Python превосходит C ++ из-за лучшей выразительности языка и более простых (разумеется, личного мнения) стандартных библиотечных инструментов для управления задачей манипулирования двоичными файлами и генерации кода. Конечно, сложные библиотеки, разработанные для этой задачи, могут быть доступны, но если нет, то я бы лично сделал ставку на то, что Python будет «более правильным» ответом - в общем случае.
источник
Не пишите сценарии самостоятельно, вы дублируете усилия и заново изобретаете колеса.
Используйте что-то вроде SCONS или даже Maven 3, который поддерживает системы сборки C ++ .
Хорошая система сборки, независимо от языка, не должна требовать настраиваемой логики в форме сценариев для построения работающего исполняемого артефакта.
Если вам нужно написать скрипты для системы сборки, чтобы настроить ее, это не очень хорошая система сборки. Написание плагина для системы сборки - это отдельная история, но, тем не менее, она должна быть очень специфичной для среды / оборудования, и к ней следует редко прибегать.
источник
Чтобы сосредоточиться на вопросе:
Ответ прост: нет .
В настоящее время принятый ответ увеличивает масштаб на python и перечисляет целую кучу действительных проблем, но я хотел бы добавить независимую от языка причину:
Вы действительно не хотите писать что-либо на любом скомпилированном языке, если можете помочь:
Кроме того, перейдем к другому ответу:
Возможно, вы также не хотите использовать «сырой» язык сценариев для создания ваших сценариев сборки (я понимаю, что сложности C ++ будут обрабатываться CMake).
Что вы, вероятно, должны сделать, это выбрать один из Build . Системы . из . есть . и посмотрите, подходит ли вам ваш счет по отношению к. Возможность написания сценариев / расширяемость / play-nice-with-CMake / кроссплатформенность.
источник