首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cmake add_subdirectory错误仅适用于cmake命令行,而不是windows上的cmake-gui (源代码在驱动器的根签出)

cmake add_subdirectory错误仅适用于cmake命令行,而不是windows上的cmake-gui (源代码在驱动器的根签出)
EN

Stack Overflow用户
提问于 2015-08-07 07:29:52
回答 2查看 1.6K关注 0票数 1

我正在开发3dtk,它使用CMake来构建。您可以在这里找到它的CMakeLists.txt:https://sourceforge.net/p/slam6d/code/HEAD/tree/trunk/CMakeLists.txt

在一些地方,它使用add_subdirectory指令,从不提供第二个参数( binary_dir)。

在linux上调用ccmake树或在windows上使用cmake-gui (在这两种情况下都是成功的)时,这似乎没有问题。

但是,当我在命令提示符下的windows上运行普通cmake时,会得到以下几个错误:

代码语言:javascript
复制
CMake Error at Z:/CMakeLists.txt:471 (add_subdirectory):
  add_subdirectory not given a binary directory but the given source
  directory "Z:/src/slam6d" is not a subdirectory of "Z:/". When specifying
  an out-of-tree source a binary directory must be explicitly specified.

我怀疑我只是错过了cmake命令的一个选项,但是哪一个呢?

就像在cmake-gui上,我为Where to build the binaries指定了一条与where is the source code创建树外构建不同的路径,就像在Linux上的ccmake中,我在源代码的子目录中运行ccmake一样,就像在源代码的子目录中运行cmake一样。

那么,cmake-guiccmake在做什么cmake没有做的事情,以及需要手动干预的地方?

编辑:在找到解决方案后,问题是我的源目录直接是一个windows驱动器号,而不是其中的一个子目录。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-07 17:38:29

结果发现这是cmake中的一个bug。引文大卫·科尔:

把你的源放在一个子目录中。CMake根本无法在Windows上的驱动器字母根部工作。CMakeLists.txt必须位于根驱动器字母路径下的至少一个子目录中.

在这个问题上也有一些公开的意见:

  • http://www.cmake.org/Bug/view.php?id=15134
  • http://www.cmake.org/Bug/view.php?id=10072
票数 2
EN

Stack Overflow用户

发布于 2016-10-06 18:28:21

看看josch给出的bug报告,看起来CMake在不久的将来就不会被修复。我在android项目中使用cmake时遇到了这个问题。

我的解决方案是使用连接(我使用windows 10),我无法将源文件夹移动到子目录。

要使连接使用mklink命令(在cmd.exe中):

代码语言:javascript
复制
cd z:\
mklink /J MyProjectJp z:\

在探索者中,您将看到一个文件夹z:\MyProjectJp,其视图与z:\完全相同。现在,要构建您的项目,请输入z:\MyProjectJp

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31871972

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档