我有以下CMake结构:
CMakelists.txt
toolchain.cmake
folder1
----CMakelists.txt
folder2
----CMakelists.txt
etc..
Run Code Online (Sandbox Code Playgroud)
我的第一级CMakelists.txt文件包含其他子目录.现在我想为不同的目标构建我的代码.
手动方式是:
1.
mkdir hostBuild
cd hostBuild
cmake ..
make
2.
mkdir crossBuild
cd crossBuild
cmake .. --DCMAKE_TOOLCHAIN_FILE=toolchain.cmake
make
Run Code Online (Sandbox Code Playgroud)
这个过程可以自动运行吗?
例如,我只需要cmake .在我的第一级运行.
这样的事情有可能吗?
不.建议将您的手动步骤放入shell脚本中.
CMake一次只能处理一个编译器/ make环境(如果你切换编译器,则需要一个不同的二进制输出目录).
特别是包含的工具链文件SET(CMAKE_SYSTEM_NAME ...)确实改变了配置/生成过程的整个结果.
有关CMake看到的内容的详细信息:CMake:解析文件的顺序(Cache,Toolchain,...)?
您可以在shell脚本中使用一些CMake命令行选项:
if [ ! -d hostBuild ]; then
cmake -E make_directory hostBuild
cmake -E chdir hostBuild cmake ..
fi
cmake --build hostBuild
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2358 次 |
| 最近记录: |