Size: a a a

2020 July 07

EP

Egor Pugin in pro.cxx
есть способ препроцессировать только #include? даже внутри всех ифдефов
источник

AB

Artöm Bakri Al-Sarmi... in pro.cxx
То есть? Без остального препроцессора?
источник

EP

Egor Pugin in pro.cxx
да
источник

EP

Egor Pugin in pro.cxx
хочу собрать мегафайл, чтобы копировать на целевую платформу без большого числа хедеров, но с возможность собирать разными компиляторами (чтобы ифдефы не съелись)
источник

EP

Egor Pugin in pro.cxx
естественно, при этом повторные инклюды не должны присутствовать, а циклов нет
источник

AB

Artöm Bakri Al-Sarmi... in pro.cxx
Не вижу такой опции на гцц. Возможно проще на каком-нибудь питоне это сделать
источник

EP

Egor Pugin in pro.cxx
да, видимо придётся своё набросать
источник

AB

Artöm Bakri Al-Sarmi... in pro.cxx
Egor Pugin
хочу собрать мегафайл, чтобы копировать на целевую платформу без большого числа хедеров, но с возможность собирать разными компиляторами (чтобы ифдефы не съелись)
Системные инклюды тоже копировать будешь?
источник

EP

Egor Pugin in pro.cxx
вот их можно не препроцессить
источник

AB

Artöm Bakri Al-Sarmi... in pro.cxx
Ну тогда мути whitelist местных хедеров
источник

PK

Pavel Kazakov in pro.cxx
как максимум, есть -nostdinc и -nostdinc++ https://gcc.gnu.org/onlinedocs/gcc/Directory-Options.html
источник

AB

Artöm Bakri Al-Sarmi... in pro.cxx
Pavel Kazakov
как максимум, есть -nostdinc и -nostdinc++ https://gcc.gnu.org/onlinedocs/gcc/Directory-Options.html
Это к поиску относится, а не к факту вставки
источник

PK

Pavel Kazakov in pro.cxx
я к тому, что этим никто не занимается :) люди какие-то мутные шелл-скрипты пишут, или просто не делают так
источник

EP

Egor Pugin in pro.cxx
вот потребовалось
источник

NP

Nikita Petrenko in pro.cxx
Egor Pugin
хочу собрать мегафайл, чтобы копировать на целевую платформу без большого числа хедеров, но с возможность собирать разными компиляторами (чтобы ифдефы не съелись)
Я когда-то чем-то похожим заморочился, для целей сдачи курсов по алгоритмам

Задача такая: есть хедер-онли библиотека, и единственный файл main.cpp. Нужно рекурсивно раскрыть все инклюды в последнем, оставив нераскрытыми только системные

В итоге набросал вот такое (предупреждаю, clang libtooling я тогда не оч знал)
https://github.com/npetrenko/clang-compose

переиспользовать полностью у тебя вряд ли получится, но возможно что-то полезное в коде найдёшь
источник

EP

Egor Pugin in pro.cxx
Nikita Petrenko
Я когда-то чем-то похожим заморочился, для целей сдачи курсов по алгоритмам

Задача такая: есть хедер-онли библиотека, и единственный файл main.cpp. Нужно рекурсивно раскрыть все инклюды в последнем, оставив нераскрытыми только системные

В итоге набросал вот такое (предупреждаю, clang libtooling я тогда не оч знал)
https://github.com/npetrenko/clang-compose

переиспользовать полностью у тебя вряд ли получится, но возможно что-то полезное в коде найдёшь
спасибо, навскидку мне думается, что простой программой, ищущей #include в начале строк будет быстрее, шланг не хотел пока подтягивать
источник

NP

Nikita Petrenko in pro.cxx
да, возможно свой примитивный препроцессор написать быстрее
источник

PK

Pavel Kazakov in pro.cxx
Nikita Petrenko
да, возможно свой примитивный препроцессор написать быстрее
мне кажется, на примитивном будет не остановиться, что-то пойдет не так, и надо будет глубже лезть в кроличью нору)

непонятен профит от мегафайла этого, почему нельзя юнити билд сразу делать? да и что дорогого поинклюдить файл еще раз? #pragma once же есть, и шаблоны гораздо больше времени парсятся и инстанцируются, чем это
источник

EP

Egor Pugin in pro.cxx
Pavel Kazakov
мне кажется, на примитивном будет не остановиться, что-то пойдет не так, и надо будет глубже лезть в кроличью нору)

непонятен профит от мегафайла этого, почему нельзя юнити билд сразу делать? да и что дорогого поинклюдить файл еще раз? #pragma once же есть, и шаблоны гораздо больше времени парсятся и инстанцируются, чем это
файл этот - большой хедер, который нужно подготовить. Сборка происходит не здесь и не сейчас.
Большой хедер заменяет около 300 других пакетов, поэтому такая задача.
источник

EP

Egor Pugin in pro.cxx
= вместо скачки большого числа пакетов  качаем файл  в архиве, который занимает не так много в сжатом виде
источник