Path CMake在生成Makefile时生成的路径名太长

Path CMake在生成Makefile时生成的路径名太长,path,windows-xp,cmake,Path,Windows Xp,Cmake,当前的项目有一个非常复杂的结构(我无法更改),它使用CMake。 但是我很难创建一个可以编译的Makefile 主要问题是:如果我的项目存储在D:\a\b\c\中,一些源代码存储在D:\a\b\c\src\D\e中,而build文件夹存储在D:\a\b\c\build中,那么cmake会创建一些文件夹,如D:\a\b\c\build\SubProjectName\CMakeFiles\DetailedSubPrjectName.dir\D\ua\b\c\src\D\e。我想你明白了——结果路径刚

当前的项目有一个非常复杂的结构(我无法更改),它使用CMake。 但是我很难创建一个可以编译的Makefile

主要问题是:如果我的项目存储在
D:\a\b\c\
中,一些源代码存储在
D:\a\b\c\src\D\e
中,而build文件夹存储在
D:\a\b\c\build
中,那么cmake会创建一些文件夹,如
D:\a\b\c\build\SubProjectName\CMakeFiles\DetailedSubPrjectName.dir\D\ua\b\c\src\D\e
。我想你明白了——结果路径刚好超过260个字符

我不能扁平化项目结构(不是我的代码)。唯一可行的方法是将整个项目放在文件夹结构的更高位置—(非常)靠近驱动器根目录(我有大约10-15个空闲字符)。但这是不可接受的,有时需要更多的字符

有没有办法说服CMake在build dir中创建平面结构,或者使用更长的路径名(在WinXP中)?或者其他一些想法?

你可以尝试用它来缩短你的路径,但显然它有一个不起作用的记录

无论如何,问题更多地来自Windows而不是CMake,您最好尝试增加系统上的最大路径长度。不幸的是,我在这里帮不了你


但是,CMake可能应该知道Windows XP上的路径长度限制,因此我建议您这样CMake开发人员可以对此做些什么。

避免此问题的最佳方法是使用
subst b:c:\my\long\source\dir
,然后使用新的b:drive。
您还必须清除生成目录。

如果使用CMAKE\u use\u RELATIVE\u路径,问题仍然存在。我目前的解决方案是使用一个临时目录(如c:\tmp\build)并添加一个生成后副本。我想这不是最好的解决办法,但我能想到的唯一办法。