有没有办法在调用cmake时将变量传递给工具链文件?
例如,我有以下工具链文件:
message("FOO = ${FOO}")
我尝试了以下方法,但未能成功。在工具链文件中变量未被设置。
cmake <src-dir> -DCMAKE_TOOLCHAIN_FILE=<toolchain-file> -DFOO="bar" -B <build-dir>
我实际上想要实现的是将路径传递给工具链文件。但我不能修改主CMakeLists.txt文件。
有没有办法在调用cmake时将变量传递给工具链文件?
例如,我有以下工具链文件:
message("FOO = ${FOO}")
cmake <src-dir> -DCMAKE_TOOLCHAIN_FILE=<toolchain-file> -DFOO="bar" -B <build-dir>
我实际上想要实现的是将路径传递给工具链文件。但我不能修改主CMakeLists.txt文件。
您需要使用-DCMAKE_TOOLCHAIN_FILE
设置工具链文件的路径。以下是适用于我的示例 (cmake3 版本 3.12.0):
ToolChain.cmake:
message("Toolchain file loaded with path: ${FOO}")
CMakeLists.txt 文件为空
cmake -DCMAKE_TOOLCHAIN_FILE=./ToolChain.cmake . -DFOO=/path
输出结果为:
Toolchain file loaded with path: /path
<src-path>
和-DCMAKE_TOOLCHAIN_FILE=./ToolChain.cmake
的顺序很重要。cmake . -DCMAKE_TOOLCHAIN_FILE=./ToolChain.cmake -DFOO=/path
无法工作。
cmake <src-dir> -DFOO="bar" -B <build-dir>
吗? - Thomas Sablik-B
是什么意思?如何设置工具链文件的路径? - Thomas Sablik-B
并没有按照我的期望工作。它设置了源路径而不是构建路径。<src-dir>
和-DCMAKE_TOOLCHAIN_FILE=<toolchain-file>
的顺序是错误的。请尝试使用我的答案中的命令cmake -DCMAKE_TOOLCHAIN_FILE=<toolchain-file> <src-dir> -DFOO="bar"
。 - Thomas Sablik