【问题标题】:CMake build multiple targets in different build directoriesCMake 在不同的构建目录中构建多个目标
【发布时间】:2015-06-23 09:36:08
【问题描述】:

我有以下 CMake 结构:

CMakelists.txt
toolchain.cmake
folder1
   ----CMakelists.txt
folder2
   ----CMakelists.txt
etc..

我的第一级 CMakelists.txt 文件包含其他子目录。现在我想为不同的目标构建我的代码。

手动方式是:

1.
    mkdir hostBuild
    cd hostBuild
    cmake ..
    make

2.
    mkdir crossBuild
    cd crossBuild
    cmake .. --DCMAKE_TOOLCHAIN_FILE=toolchain.cmake
    make

这个过程有没有可能自动运行?

例如,我只需要在第一级运行cmake .

这样的事情可能吗?

【问题讨论】:

    标签: c++ cmake


    【解决方案1】:

    没有。建议只是将您的手动步骤放入 shell 脚本中。

    CMake 一次只能处理一个编译器/make 环境(如果切换编译器,则需要不同的二进制输出目录)。

    尤其是包含SET(CMAKE_SYSTEM_NAME ...) 的工具链文件确实会改变配置/生成过程的整个结果。

    有关 CMake 所见内容的详细信息:CMake: In which Order are Files parsed (Cache, Toolchain, …)?

    你可以在你的 shell 脚本中使用一些 CMake 命令行选项:

    if [ ! -d hostBuild ]; then
        cmake -E make_directory hostBuild
        cmake -E chdir hostBuild cmake ..
    fi
    cmake --build hostBuild
    ...
    

    【讨论】:

      猜你喜欢
      • 2016-08-02
      • 2013-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-20
      • 1970-01-01
      相关资源
      最近更新 更多