cmake将中间文件放在某个目录中

我对cmake很新,并想知道如何做到这一点是cmake。 我想将所有中间文件(如.o文件)放在某个目录中(比如说“build”),然后一旦构建完成,我想复制我需要的某些文件(例如.exe ,. dll喜欢最终产品)从build目录到“stage”目录。 如何指定这两个目录(构建和阶段)的路径? Cmake还将检查build / stage目录是否存在。 如果不存在,它将为我创建目录。

任何帮助将不胜感激。

你问的是最常见的CMake用例。

要使整个构建过程在仲裁目录中进行,您应该从该目录运行cmake /path/to/your/project (或使用cmake-gui)。

在您明确告诉CMake输出某些文件之前,您的源目录将不受影响。

至于第2点:

您应该将install()调用放入CMakeLists.txt(请参阅install()文档)并将CMAKE_INSTALL_PREFIX设置为您希望复制文件的目录。 之后,您可以从构建目录运行make installcmake -P cmake_install.cmake来安装这些文件。

我会建议另一种方法。

  1. 使源外构建看到这里 ,以便所有构建的东西都在一个自己的文件夹中
  2. 使用显式复制将您的可执行文件从构建目录复制到自己的文件夹中, 请参阅此处

或者,您也可以提供一个安装例程,而不是选择第2步,其中所需的可执行文件安装在给定路径中。 看这里