在进行源代码构建之后,如何强制CMake在其他地方构建?

时间:2019-02-08 15:07:50

标签: cmake directory-structure building

假设我有一个名为foo的项目,其源位于/foo/src下。还要假设在过去的某个时候,有人运行了cmake /foo/src,因此那里有构建文件。

现在,我想在foo中执行/foo/build的构建。但是,如果我cd /foo/build; cmake /foo/src-将/foo/src视为构建目录,并在此处而不是在当前目录中配置并生成该构建文件。

问题:

  1. 为了使cmake在/foo/src中配置和生成构建文件,需要删除/foo/build中最小的文件集是什么?
  2. 我可以强制cmake使用/foo/build而不从/foo/src中删除任何内容吗?

1 个答案:

答案 0 :(得分:1)

1。足以删除的文件集

要删除的文件集足够多(也许不是最少):

CMakeCache.txt
Makefile
cmake_install.cmake
CMakeFiles/

如果您还启用了测试,则

CTestTestfile.cmake
Testing/
tests/CTestTestfile.cmake
tests/Makefile
tests/cmake_install.cmake
tests/CMakeFiles/

2。如何在不删除的情况下强制使用其他构建位置:

如果执行

cmake -B/foo/build -H/foo/src

CMake将忽略先前的构建,并在/foo/build下进行构建。发出此命令时,您不需要将它作为当前工作目录。

该答案的第二部分实际上可以在this answer

中找到