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

在源代码内构建之后,如何强制CMake在其他地方构建?,cmake,directory-structure,building,Cmake,Directory Structure,Building,假设我有一个名为foo的项目,其源代码位于/foo/src下。还假设在过去的某个时候,有人运行了cmake/foo/src,因此那里有构建文件 现在,我想在/foo/build中执行foo的构建。但是如果我cd/foo/build;cmake/foo/src-它将/foo/src视为构建目录,并在那里而不是在当前目录中配置和生成构建文件 问题: 为了让cmake在/foo/build中配置和生成生成文件,在/foo/src中要删除的最小文件集是什么 我可以强制cmake使用/foo/build,

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

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

问题:

  • 为了让cmake在
    /foo/build
    中配置和生成生成文件,在
    /foo/src
    中要删除的最小文件集是什么
  • 我可以强制cmake使用
    /foo/build
    ,而不删除
    /foo/src
    中的任何内容吗
  • 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
    下的构建。发出此命令时,不需要将其作为当前工作目录

    这个答案的第二部分实际上可以在