CMake在不同的生成目录中生成多个目标
CMake build multiple targets in different build directories
我有以下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 .
。
这样的事情可能发生吗?
否。建议将手动步骤放入shell脚本中。
CMake一次只能处理一个编译器/make环境(如果切换编译器,则需要不同的二进制输出目录)。
尤其是一个包含SET(CMAKE_SYSTEM_NAME ...)
的工具链文件确实会改变配置/生成过程的整个结果。
有关CMake的详细信息,请参阅:CMake:文件解析的顺序(缓存、工具链…)?
您可以在shell脚本中使用一些CMake命令行选项:
if [ ! -d hostBuild ]; then
cmake -E make_directory hostBuild
cmake -E chdir hostBuild cmake ..
fi
cmake --build hostBuild
...
相关文章:
- 在 CMake 中为每个目标设置编译器/链接器标志
- 如何在 CMake 中对目标依赖项进行分组?
- 我应该如何在没有变量的情况下将相同的参数传递给 CMAKE 中的多个目标?
- CMake 错误 - 目标 foo INTERFACE_SOURCES属性包含在源目录中以前缀为前缀的路径
- 如何从目标触发 CMake 重新配置?
- 为什么子项目 CMAKE 不考虑 fno-sanitize,请禁用目标的消毒器
- CMake "安装" 目标及其 SO 依赖项
- CMake on FindOpenGL.cmake 中的错误,当使用导入的目标 OpenGL::GLU?
- 在对象库中包含 CMake 目标的标头
- CMake 设置使用不正确的参数数调用的目标属性
- CMake 的导出如何知道目标版本是什么?
- CMake:防止在子目录库项目中生成测试可执行目标
- 如何让KDevelop & CMake只构建特定目标?
- CMake:什么是可能的目标源类型?它们可以扩展吗
- CMake无法确定目标的链接器语言:fileloader
- CMake 库目标并不总是出现在 Visual Studio 2017 的"启动项"下拉列表中。
- 如何使用cmake从主要的CMakeList.txt复制目标文件?
- 导出(安装)的 cmake 目标是否可分发?
- CMake 提升进口目标
- CMAKE+QT MAC 如何设置部署目标?