【问题标题】:CMake subdirectoryCMake 子目录
【发布时间】:2010-09-07 09:58:52
【问题描述】:

我正在使用 CMake,我想尝试制作它,因此我有一个子目录,而不是分散在我的项目或其根目录中的文件。

我有一个project/cmake/CMakeLists.txtproject/binproject/source 的目录布局,因此人们可以根据需要轻松删除CMake 内容。我唯一的问题是,可能有一种我不知道的方法可以做到这一点。目前它会生成一堆垃圾,包括project/cmake/bin/obtap.dir/home/jookia/Programming/obtap/source 文件夹。

cmake_minimum_required(VERSION 2.6)
project(obtap)
add_definitions(-g -Wall)
add_executable(../bin/obtap ../source/main.cpp)

它编译得很好,它输出了正确的目录。但我的问题是这样的: 有没有办法删除project/cmake/bin 目录,并且可选地,有没有办法不拥有所有 CMake 的东西,而是只生成一个 makefile,所以我有两个文件,CMakeLists.txt 和 Makefile?

【问题讨论】:

  • 删除bin目录是什么意思?为什么rm -fr project/cmake/bin 不符合您的需求?

标签: cmake


【解决方案1】:

CMake FAQ 中所述,生成的 Makefile 包含库和源代码的完整路径,因此没有简单的方法来分发 CMake 生成的构建树。

【讨论】:

    【解决方案2】:

    我相信你想要的应该是所谓的out of source build,可以通过在专用目录中运行cmake在单独的目录中生成中间文件来实现>,对于您的情况,您可以尝试以下命令:

    mkdir -p project/bld/
    cd project/bld/
    cmake project/cmake
    

    现在您可以在 project/bld 目录中获得所有生成的 CMake 内容,并且当您想要删除所有这些内容时,只需运行:

    rm -fr project/bld/
    

    您甚至可以通过设置不同的构建树来获得多个不同的配置文件。

    如果您想控制生成的可执行输出路径使其不隐藏在深度嵌套的 cmake 中间二叉树中,则可能会出现一个问题;答案是您可以设置变量CMAKE_CURRENT_BINARY_DIR来自定义可执行文件输出的绝对路径,或者直接使用cmake -Eadd_custom_command命令将可执行文件复制出来。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-20
      • 2020-12-16
      • 1970-01-01
      • 2016-03-30
      • 2017-01-14
      相关资源
      最近更新 更多