如何要求 cmake 清理 Msvc 构建的发布配置

发布于 2024-11-07 03:43:03 字数 1416 浏览 2 评论 0原文

我有不同编译器(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 命令用于 clean 所有目标:

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

所以我找到了我的问题的答案。

I have build tree for different compilers (msvc-2008, mingw-gcc), generated with CMake:

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

And i want to build all configurations with one script. I wrote simple python wrapper, which iterates over hierarchy and calls cmake --build. For msvc builds i need to select proper configuration for building, cleaning and installing

I read documentation, and find parameter --config.

So final cmake command looks like:

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

Here cmake commands for clean all targets:

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

So i found answer on my question.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

呆橘 2024-11-14 03:43:03

免责声明:我必须承认我对 Cmake 的 --build 选项了解不多。但是,cmake 还会生成“package”和“install”目标,也许您可​​以使用 cmake --build 的 --target 选项来指定它们。

cmake --build my_build_dir --target install 

否则,您将需要使用 devenv 或 msbuild 命令行选项来指定它们。如果没有 cmake,这将类似于

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

Disclaimer: I must admit that I do not know much about the --build option for Cmake. However, cmake also generates a 'package' and 'install' target, perhaps you can specify those with the --target option with cmake --build.

cmake --build my_build_dir --target install 

Otherwise, you will need to specify those using devenv or msbuild command line options. Without cmake this woule be something like

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

I guess you can pass everything after msbuild/devenv through to cmake with '--'

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文