如何告诉 CMake 使用相对路径

now*_*wox 5 cmake

如果我制作我的项目,我可以看到:

[ 50%] Building C object CMakeFiles/hello.dir/hello.c.obj
/cygdrive/c/users/me/Home/bin/iccarm  /cygdrive/c/users/me/Home/sandbox/iar/hello.c  -I/cygdrive/c/users/me/Home/sandbox/iar/foo -I/cygdrive/c/users/me/Home/inc   -o CMakeFiles/hello.dir/hello.c.obj
Run Code Online (Sandbox Code Playgroud)

既然我总是make在我的build目录中调用,那么为了跨操作系统的可读性和兼容性,为什么不使用相对路径呢?

[ 50%] Building C object CMakeFiles/hello.dir/hello.c.obj
iccarm  hello.c -Ifoo -Iinc -o CMakeFiles/hello.dir/hello.c.obj
Run Code Online (Sandbox Code Playgroud)

是不是好多了?

有没有办法强制 CMake 尽可能多地使用相对路径?

Flo*_*ian 8

CMake 总是使用绝对路径。这是概念的一部分。因此,您不能移动生成的构建环境文件,也不能例如将它们置于源代码控制之下或使详细输出更漂亮(您可以像这里一样使用规则消息)。

曾经有过CMAKE_USE_RELATIVE_PATHS,但文档显示:

此变量无效。它在以前版本中的部分实现效果在 CMake 3.4 中被删除。

参考

  • 好吧,拥有绝对路径对我来说是正确的。我无法移动我的源目录?这怎么算优势? (2认同)