如何将变量从命令行传递到 CMake Toolhain 文件?

ser*_*gej 2 cmake

有没有办法在调用 cmake 时将变量传递给工具链文件?

例如,我有以下工具链文件:

message("FOO = ${FOO}")
Run Code Online (Sandbox Code Playgroud)

我尝试了以下方法,但没有奏效。该变量未在工具链文件中设置。

cmake <src-dir> -DCMAKE_TOOLCHAIN_FILE=<toolchain-file> -DFOO="bar" -B <build-dir>
Run Code Online (Sandbox Code Playgroud)

我真正想要实现的是将路径传递给工具链文件。而且我无法修改 .txt 中的主 CMakeLists.txt。

Tho*_*lik 7

您必须使用 .zip 文件设置工具链文件的路径-DCMAKE_TOOLCHAIN_FILE。以下对我有用(cmake3 版本 3.12.0):

工具链.cmake:

message("Toolchain file loaded with path: ${FOO}")
Run Code Online (Sandbox Code Playgroud)

CMakeLists.txt 为空

cmake -DCMAKE_TOOLCHAIN_FILE=./ToolChain.cmake . -DFOO=/path
Run Code Online (Sandbox Code Playgroud)

输出是:

Toolchain file loaded with path: /path
Run Code Online (Sandbox Code Playgroud)

的顺序<src-path>-DCMAKE_TOOLCHAIN_FILE=./ToolChain.cmake是很重要的。

cmake . -DCMAKE_TOOLCHAIN_FILE=./ToolChain.cmake -DFOO=/path
Run Code Online (Sandbox Code Playgroud)

不起作用。