当前项目具有相当复杂的结构(我无法更改)并使用CMake。 但是我有麻烦来创建一个可以编译的Makefile。
主要问题是:如果我的项目存储在D:\a\b\c\
,D:\a\b\c\src\d\e
中的某些来源和D:\a\b\c\build
中的构建文件夹中,则cmake会创建一些文件夹,例如D:\a\b\c\build\SubProjectName\CMakeFiles\DetailedSubPrjectName.dir\D_\a\b\c\src\d\e
。我认为你明白了 - 结果路径超过260个字符。
我不能压扁项目结构(不是我的代码)。实现这项工作的唯一方法是将整个项目放在文件夹结构中更高的位置 - (非常)靠近驱动器根目录(我有大约10-15个字符备用)。但这并不是真的可以接受,有时需要更多的角色。
有没有办法说服CMake在构建目录中创建平面结构或使用更长的路径名(在WinXP中)?或者其他一些想法?
答案 0 :(得分:1)
您可以尝试使用CMAKE_USE_RELATIVE_PATHS来缩短您的路径,但显然它有不起作用的记录......
无论如何,问题来自Windows而不是CMake,你最好尝试增加系统的最大路径长度。不幸的是我在这里帮不了你。
但是,CMake应该知道Windows XP上的路径长度限制,所以我建议你file a bug,以便CMake开发人员可以做些什么。
答案 1 :(得分:0)
解决此问题的最佳方法是使用subst b: c:\my\long\source\dir
,然后在新的B:驱动器上工作。
您还必须清除构建目录。