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

时间:2012-02-09 20:56:53

标签: c++ c cmake build-automation

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

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

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

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

您的源目录将不受影响,直到您明确告诉CMake在那里输出一些文件。

至于第2点:

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

答案 1 :(得分:1)

我建议采用另一种方法。

  1. 制作源外构建see here,以便所有构建内容都在自己的文件夹中
  2. 使用显式复制see here
  3. 将您的构建目录中的可执行文件复制到自己的文件夹中

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