【问题标题】:Can someone expand what is meant by 'configure' and 'build' with CMake files有人可以用 CMake 文件扩展“配置”和“构建”的含义吗
【发布时间】:2019-08-20 23:31:20
【问题描述】:

我正在从 GitHub (subdivision-regression) 下载此代码,但按照说明操作时遇到问题:

To build doosabin_regression:

    Run CMake with an out of source build.
    Set COMMON_CPP_INCLUDE_DIR to the full path to rstebbing/common/cpp.
    Set DOOSABIN_INCLUDE_DIR to the full path to rstebbing/subdivision/cpp/doosabin/include.
    Set Ceres_DIR to the directory containing CeresConfig.cmake.
    Set GFLAGS_INCLUDE_DIR, GFLAGS_LIBRARY and RAPID_JSON_INCLUDE_DIR. (Add -std=c++11 to CMAKE_CXX_FLAGS if compiling with gcc.)
    Configure.
    Build.

我编辑了CMakeLists.txt 文件以放入正确的路径。然后我创建了一个名为subdivision-regression-bin 的新目录并运行:

cmake ../subdivision-regression/src

它完成并显示:

-- Configuring done
-- Generating done
-- Build files have been written to: /home/hert5584/RStebbing/subdivision-regression-bin

但是,当我尝试运行示例代码时,它找不到CMakeLists.txt 中列出的文件(我知道它们是正确的路径,否则 CMake 无法运行)。

我试过跑步:

sudo make install 

但是得到以下错误:

make: *** No rule to make target 'install'. Stop.

任何想法为什么这不起作用?以上步骤是否配置并构建了文件?

【问题讨论】:

  • 说明不要求您安装项目,他们只要求配置和构建它。但make install 实际上安装 项目。对于 build 项目使用纯 make。 “构建”和“安装”之间的区别不是 CMake 特定的,几乎所有构建系统都描述了这些阶段。

标签: build cmake configure


【解决方案1】:

要理解的有序CMake习语是:

  1. 配置步骤
  2. 生成步骤(这通常包含在配置步骤中,在本例中没有明确提及。)
  3. 构建步骤(在该步骤中,您实际上将代码编译/链接到库/可执行文件中)

查看resource,了解有关 configure 和 generate 阶段的信息。

您似乎没有执行设置 CMake 缓存变量的步骤。对于这些,您必须使用 CMake 命令行 options(特别是 -D)。所以像这样运行 CMake 来设置所有六个变量:

cmake -DCOMMON_CPP_INCLUDE_DIR=/rstebbing/common/cp -DDOOSABIN_INCLUDE_DIR=...[More CMake Cache variables]...  ../subdivision-regression/src

对于构建,尝试只运行 make 而不运行 sudo 或 install:

make

【讨论】:

  • sudo 通常用于安装 (make install),但很少用于构建。
  • 谢谢!我正在手动编辑 CMakeList.txt,而不是使用命令!现在一切正常
猜你喜欢
  • 2012-02-11
  • 1970-01-01
  • 1970-01-01
  • 2012-07-19
  • 1970-01-01
  • 2016-09-24
  • 1970-01-01
  • 2011-04-01
  • 1970-01-01
相关资源
最近更新 更多