Как собрать несколько конфигураций одновременно с CMake? - PullRequest
9 голосов
/ 05 марта 2011

Например, как я должен собирать релизную и отладочную версию одновременно?Я предполагаю, что в ответе используются переменные кэша и их некая «коллекция».Это обычный способ получить параметры конфигурации из параметров кэша, не так ли?Если ответ «да», как мне лучше всего использовать несколько «коллекций» из них?Большое спасибо!

Ответы [ 2 ]

12 голосов
/ 05 марта 2011

Вы не указываете платформу, о которой говорите. Генераторы на основе Makefiles будут создавать только одну конфигурацию за раз, и обычным способом построения нескольких конфигураций является использование отдельных деревьев сборки, например, один для 64-битной Linux на Intel, один для 32-битной Windows и т. д. Большинство проектов CMake советуют из исходных сборок, и при условии, что вы правильно написали файлы CMakeLists, у вас могут быть ~ / src / YourProject и ~ / build / YourProject -Release, ~ / build / YourProject-Debug.

Это рекомендуемый способ сделать это, предполагая, что в вашем исходном дереве нет никакого CMakeCache.txt и т. Д. Затем вы можете запустить cmake -DCMAKE_BUILD_TYPE: STRING = Debug ~ / src / YourProject в каталоге отладки и аналогично для выпуска. Преимущество этого заключается в том, что вы можете указывать зависимые проекты на соответствующую конфигурацию.

Проект Boost CMake также исследовал создание всех конфигураций в одном и том же дереве сборки, используя дифференцирование имени библиотеки. На это стоит обратить внимание, если вам необходимо собрать все конфигурации в одном дереве сборки.

6 голосов
/ 13 июля 2012

(для коллег по Google)

Будьте осторожны, не перепутайте типы сборки и конфигурации сборки .

Если вы действительно имеете в виду «типы сборки», такие как debug и release , и хотите собрать их одновременно, тогда Cmake FAQ дает ответ: Как можно Я строю несколько режимов без переключения

По сути, это предполагает использование нескольких сборок вне исходного кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...