【问题标题】:After an in-source build, how to force CMake to build someplace else?在源代码构建之后,如何强制 CMake 在其他地方构建?
【发布时间】:2019-07-02 20:41:51
【问题描述】:

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

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

问题:

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

【问题讨论】:

    标签: cmake directory-structure building


    【解决方案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中找到

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-07
      • 1970-01-01
      • 2020-12-09
      相关资源
      最近更新 更多