Название: cmake и конфигурация сборки и линковки через json Отправлено: SektorCT от Июнь 10, 2023, 14:37 Всем привет.
Такой вопрос, для cmake можно в файле CMakePresets.json прописать определенные настройки, и при выборе проект будет собираться по данным правилам. Вопрос: можно ли через такие настройки указать например в одном случаи мне нужна линковка в одним набором модулей, а в другом случаи с другим? Еще в проекте присутствуют паблик и приват файлы, и с ними тоже надо работать. То есть возможна ли гибкость переключения сборки? Может кто сталкивался с подобным. Заранее спасибо. Название: Re: cmake и конфигурация сборки и линковки через json Отправлено: kambala от Июнь 11, 2023, 22:57 да, сделай два пресета, в которых будет отличаться какая-то твоя опция, на основании которой будешь выбирать какие модули использовать. эти два пресета можно унаследовать от общего.
про переключение непонятно. это вопрос про какую-то конкретную Иде? Название: Re: cmake и конфигурация сборки и линковки через json Отправлено: SektorCT от Июнь 12, 2023, 16:16 да, сделай два пресета, в которых будет отличаться какая-то твоя опция, на основании которой будешь выбирать какие модули использовать. эти два пресета можно унаследовать от общего. про переключение непонятно. это вопрос про какую-то конкретную Иде? Вообще выбор того пресета который нужен это как минимум работает в QtCreator, CLion, VS. про другие не знаю. Проблема в проекте то что приходится генерировать и вытаскивать публичные хедеры в зависимости от того какой проект нужен, потом линковка с модулями. Я же хочу найти способ как без ... генерации через пресеты переключать нужные варианты сборки и линковки. Название: Re: cmake и конфигурация сборки и линковки через json Отправлено: kambala от Июнь 12, 2023, 17:15 все равно не особо понятно в чем проблема. можешь на синтетическом примере продемонстрировать?
со своей опцией у тебя просто будет 2 отдельных папки сборки, например: Код: # 1 Название: Re: cmake и конфигурация сборки и линковки через json Отправлено: SektorCT от Июнь 14, 2023, 09:02 все равно не особо понятно в чем проблема. можешь на синтетическом примере продемонстрировать? со своей опцией у тебя просто будет 2 отдельных папки сборки, например: Код: # 1 Смотрите, я хочу понять как сделать например включение или выключение сборки каких то таргетов, ключение многопоточного билда как для gcc, так и в случаи если сборка идет в мелкомягкой через MSVC(это вообще не понятно как работает и как это задать). Но самое главное это переключенеи таргетов. Я написал лайт вариант с которым можно попробовать сделать такой пример,могу послать. Название: Re: cmake и конфигурация сборки и линковки через json Отправлено: kambala от Июнь 14, 2023, 11:21 все это через опции (необязательно булевые) решается, например:
Код: option(MYOPTION "Some bool option" OFF) Название: Re: cmake и конфигурация сборки и линковки через json Отправлено: SektorCT от Июнь 14, 2023, 14:19 все это через опции (необязательно булевые) решается, например: Код: option(MYOPTION "Some bool option" OFF) Так можно, но как оказалось никто не хочет чет менять аля опции в нужной ситуации. Нужно через пресеты, то есть выбрал нужный и он переконфигурировал. Название: Re: cmake и конфигурация сборки и линковки через json Отправлено: kambala от Июнь 14, 2023, 18:55 ну так эту опцию в пресет и впиши :)
да, сделай два пресета, в которых будет отличаться какая-то твоя опция, на основании которой будешь выбирать какие модули использовать. эти два пресета можно унаследовать от общего. Название: Re: cmake и конфигурация сборки и линковки через json Отправлено: SektorCT от Июнь 14, 2023, 22:23 ну так эту опцию в пресет и впиши :) да, сделай два пресета, в которых будет отличаться какая-то твоя опция, на основании которой будешь выбирать какие модули использовать. эти два пресета можно унаследовать от общего. Вот мой минимальный пресет, как в него добавить? Код: { И сразу вопрос, как сюда можно добавить указание для MSVC билдить например в 8 потоков? Название: Re: cmake и конфигурация сборки и линковки через json Отправлено: kambala от Июнь 14, 2023, 23:22 не надо бояться документации https://cmake.org/cmake/help/latest/manual/cmake-presets.7.html
добавь новую переменную в cacheVariables для многопоточной сборки надо добавить buildPresets и использовать поле jobs. если у тебя генерируется проект для студии, то msbuild должен собирать параллельно по умолчанию, насколько я помню. вижу, у тебя генератор Ниндзя, так она по умолчанию тоже параллельно собирает. Название: Re: cmake и конфигурация сборки и линковки через json Отправлено: SektorCT от Август 03, 2023, 11:18 Добрый день.
В общем при разборе того что надо было переписывать оказалось небольшое недопонимание. У VS есть какой то функционал для MSbuilder что какие то проекты могут быть load а какие то unload. Именно это и надо было найти. И может я ошибаюсь но разве это не тоже самое что конфигурация через пресеты cmake? Название: Re: cmake и конфигурация сборки и линковки через json Отправлено: kambala от Август 03, 2023, 13:02 пресеты задают всякие cmake параметры, типа твоих кастомных переменных, флажков компиляции и т.д., чтоб не писать их вручную в терминале
если ты не добавишь папку проекта через add_subdirectory, то ее в солюшене вообще не будет. как сделать чтоб проект там был, но был unload или чтоб не собирался по умолчанию я не знаю, это надо курить доку cmake касательно студийно-специфических переменных/свойств (а то и вовсе вручную править сгенерированный файл солюшена/проекта) |