shasoft
@shasoft

Есть ли пакет nodejs для объединения списка .cpp и .h в два файла main.cpp и main.h?

Есть список файлов .cpp и к ним .h
Хотелось бы объединить их в два файла. Может есть какой пакет nodejs?
  • Вопрос задан
  • 123 просмотра
Решения вопроса 1
@MarkusD Куратор тега C++
все время мелю чепуху :)
Тот факт, что для генерации кода в проекте используется Node.js, не может являться требованием к текущей задаче.
Генерация кода - это одна задача. Подготовка сгенерированного кода к использованию - другая задача.

Искомая технология называется Source Code Amalgamation [?]. Еще ее называют Single Compilation Unit (SCU) или Unity Build [?].
Технология широко используется системами распределенной сборки, например FASTBuild [?] или Incredibuild [?].
Помимо этого, технология позволяет разработчикам библиотек готовить свои библиотеки в виде single-header или single-header/single-source.

Для решения задачи можно попробовать завязаться на функциональность Buck [?] или FASTBuild с целью не сборки целевого проекта, а только получения SCU этого проекта.
Далее с этим SCU можно работать как с обычным файлом исходного кода.
Самым наивным решением SCU будет подключение всех файлов исходного кода в один через обычный #include. Но этот подход нельзя считать рабочим, а лишь тестовым. Однако, например, GoogleTest [>] использует именно такой подход в поставке all-in-one.
Далеко не все библиотеки пригодны для работы в виде SCU. Например, в свое время LZ4 [>] не была готова к упаковке в SCU, что привело к ошибкам трансляции при ее сборке. Библиотека потребовала определенной чистки и реструктуризации для успешной упаковки в SCU.
Для генераторов кода было бы проще генерировать сразу SCU по требованию. Например, в свое время Google Flatbuffers [>] умела генерировать только наборы файлов по принципу "Один тип - один заголовок + один исходник", что в некоторых случаях приводило к генерации сотен и тысяч файлов внутрь проектов. По задаче об амальгамировании исходный код компилятора fbc был доработан таким образом, чтобы при указании опции компилятор выдавал один заголовок и один исходник в независимости от набора и содержимого схем формата.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы