как попросить cmake очистить конфигурацию выпуска для сборки Msvc

У меня есть дерево сборки для разных компиляторов (msvc-2008, mingw-gcc), созданное с помощью CMake:

\---buildroot
    \---win32
        +---mingw-gcc-4.4.0
        |   +---Debug
        |   \---Release
        \---msvc-2008
            +---Debug_Dynamic
            +---Debug_Static
            +---Release_Dynamic
            \---Release_Static

И я хочу собрать все конфигурации одним скриптом. Я написал простую оболочку python, которая выполняет итерацию по иерархии и вызывает cmake --build. Для сборок msvc мне нужно выбрать правильную конфигурацию для сборки, очистки и установки.

Я читал документацию и нахожу параметр --config.

Итак, последняя команда cmake выглядит так:

cmake --build win32\mingw-gcc-4.4.0\Debug
cmake --build win32\mingw-gcc-4.4.0\Release
cmake --build win32\msvc-2008\Debug_Dynamic --config Debug
cmake --build win32\msvc-2008\Debug_Static --config Debug
cmake --build win32\msvc-2008\Release_Dynamic --config Release
cmake --build win32\msvc-2008\Release_Static --config Release

Вот команды cmake для очистки всех целей:

cmake --build win32\mingw-gcc-4.4.0\Debug --target clean
cmake --build win32\mingw-gcc-4.4.0\Release --target clean
cmake --build win32\msvc-2008\Debug_Dynamic --config Debug --target clean
cmake --build win32\msvc-2008\Debug_Static --config Debug --target clean
cmake --build win32\msvc-2008\Release_Dynamic --config Release --target clean
cmake --build win32\msvc-2008\Release_Static --config Release --target clean

Итак, я нашел ответ на свой вопрос.


person Alexey    schedule 16.05.2011    source источник
comment
Вопрос не совсем ясный. Прежде всего, cmake не принимает эти параметры в командной строке. Во-вторых, если вы уже создали проект (с CMAKE_BUILD_TYPE = Release), зачем снова запускать cmake?   -  person André    schedule 16.05.2011
comment
@Andre, с помощью CMake можно собрать проект, а не только конфигурировать. Наш проект компилируется разными компиляторами, поэтому cmake --build действительно помогает. Можно выбрать конфигурацию для сборки, просто вызовите cmake --build my_build_dir --config Release --target clean, чтобы очистить конфигурацию Release, аналогичная команда для установки.   -  person Alexey    schedule 16.05.2011
comment
Вы уверены, что из-за того, что я получаю сообщение об ошибке, что-то вроде исходного каталога --build не существует   -  person André    schedule 16.05.2011
comment
cmake.org/cmake/help/cmake- 2-8-docs.html # opt: - builddir   -  person Alexey    schedule 16.05.2011
comment
Спасибо, я этого не знал. Но ... у меня все равно не работает. Поскольку я не знаю, какая базовая система сборки командной строки используется cmake, я создал ответ для devenv и для msbuild. Возможно, вы сможете отредактировать свой вопрос и сказать, какой из них используется?   -  person André    schedule 16.05.2011


Ответы (1)


Отказ от ответственности: я должен признать, что не очень разбираюсь в параметре --build для Cmake. Однако cmake также генерирует цель package и install, возможно, вы можете указать их с параметром --target с помощью cmake --build.

cmake --build my_build_dir --target install 

В противном случае вам нужно будет указать те, которые используют параметры командной строки devenv или msbuild. Без этого он будет чем-то вроде

devenv INSTALL.vcproj /Build Release
devenv INSTALL.vcproj /Clean Release

msbuild INSTALL.vcproj /t:Build /p:Configuration=Release
msbuild INSTALL.vcproj /t:Clean /p:Configuration=Release

Я думаю, вы можете передать все после msbuild / devenv в cmake с помощью '-'

person André    schedule 16.05.2011