设置cmake生成的文件的输出路径

时间:2017-12-05 21:35:14

标签: c++ compilation cmake clion

我的问题如下: 有没有办法告诉CMakeFiles在哪里生成它的makefile,比如cmake_install.cmake,CMakeCache.txt等?

更具体地说,有没有办法在CMakeFiles中设置一些命令来指定输出这些生成文件的位置?我试图在网上搜索一些答案,大多数人都说没有明确的方法可以做到这一点,而其他人说我可以使用自定义命令。可悲的是,我对cmake的态度不是很强,所以我无法理解这一点。

我目前正在使用CLion IDE,你可以在那里通过设置专门设置输出路径,但出于灵活性的原因,我希望尽可能通过CMakeFiles完成,以便从不同的计算机编译不是那个大麻烦。

我还想避免显式添加额外的命令行参数等。

我希望有人可以给我一个答案,提前谢谢!

1 个答案:

答案 0 :(得分:2)

你不能(轻松)这样做,你不应该尝试这样做。

构建树是CMake的领地。它允许您在那里进行一些微小的自定义(例如,您可以通过*_OUTPUT_DIRECTORY目标属性指定最终构建工件的位置),但它不会直接控制中间文件的位置,例如对象正在放置用于簿记的文件或内部制作脚本。

这是功能。您不知道CMake支持的所有构建系统如何在内部工作。也许您可以将内部文件移动到构建过程中的其他位置,该过程基于Unix Makefiles。但也许这也会严重破坏我的构建过程,即使用Visual Studio。底线是:你不应该关心这个。 CMake应该照顾它,并通过远离你的一些自由,它确保它可以在所有支持的构建工具链上实际该工作。

但这对你来说可能仍然是一个令人不满意的答案。你是开发人员,你不应该完全控制你的构建产生的结果吗?当然你应该,这就是为什么CMake再次允许你完全控制进入安装树的内容的原因。也就是说,当您调用make install(或者等同于在构建工具链中安装的任何东西)时,安装目录中的任何内容都会在您的控制之下。

因此,您可以控制所有重要的事项:源代码树,安装树以及最终构建工件所在的构建树的那一小部分。构建树的其余部分对你来说是禁止的,并且有充分的理由。