我正在开发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时,会得到以下几个错误:
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-gui和ccmake在做什么cmake没有做的事情,以及需要手动干预的地方?
编辑:在找到解决方案后,问题是我的源目录直接是一个windows驱动器号,而不是其中的一个子目录。
发布于 2015-08-07 17:38:29
结果发现这是cmake中的一个bug。引文大卫·科尔:
把你的源放在一个子目录中。CMake根本无法在Windows上的驱动器字母根部工作。CMakeLists.txt必须位于根驱动器字母路径下的至少一个子目录中.
在这个问题上也有一些公开的意见:
发布于 2016-10-06 18:28:21
看看josch给出的bug报告,看起来CMake在不久的将来就不会被修复。我在android项目中使用cmake时遇到了这个问题。
我的解决方案是使用连接(我使用windows 10),我无法将源文件夹移动到子目录。
要使连接使用mklink命令(在cmd.exe中):
cd z:\
mklink /J MyProjectJp z:\在探索者中,您将看到一个文件夹z:\MyProjectJp,其视图与z:\完全相同。现在,要构建您的项目,请输入z:\MyProjectJp。
https://stackoverflow.com/questions/31871972
复制相似问题