【发布时间】:2020-05-14 00:19:14
【问题描述】:
我正在从源外部运行我的 cmake (3.16)。通常带有这些论点
cmake -S ./avionics_apps/ -B build -DINPUT_DIR:PATH=./other-build/
将INPUT_DIR 变量中设置的相对路径转换为同样适用于源构建和源构建的绝对路径的方法是什么? get_filename_component 可以使用,但它需要一些基本路径。但是,我还没有在 cmake 中找到一个变量来指定 cmake run 所在的目录。有二进制和源目录。但是CMAKE_BINARY_DIR 和CMAKE_SOURCE_DIR 的源代码构建是相同的。
【问题讨论】:
-
也许一个问题的例子会很有用。 INPUT_DIR 应自动转换为绝对路径。你是说这不会发生吗?如果你想存储当前工作目录为什么不使用
-DCWD=`pwd`? -
INPUT_DIR 应该自动转换为绝对路径吗?它没有发生。在代码内部,它看起来与通过的相同。使用
-DCWD='pwd'可能会起作用,但我希望 CMake 已经有了一些东西。 -
@Tsyvarev 来自
cmake(1)的 CMake 文档,对于-D:If a command in the project sets the type to PATH or FILEPATH then the <value> will be converted to an absolute path.来自set命令 ` 此外,如果是 PATH 或 FILEPATH 并且提供了 命令行上是相对路径,那么 set 命令会将路径视为相对于当前工作目录的路径,并将其转换为绝对路径。` 也许我误解了转换发生的时间或方式。 -
@fdk1342:你是对的!最困难的部分是理解不应在命令行中指定变量的类型...
标签: cmake