所以我有一个疯狂的项目设置(好吧,只有 1 个文件需要这种疯狂)。首先,我将解释一下设置。
所以我的保管箱上有一个文件。我想将该文件包含在 Kdevelop 项目中,但项目源代码的其余部分位于虚拟机上,以及我正在工作的 Kdevelop 环境本身。
所以我所做的是在 kdevelop 项目的项目目录树中,我在我的保管箱中放置了一个指向该文件的符号链接。总结一下。
host:~$ ls Dropbox/
Dropbox/pxaregsmodule.c
vm:~$ mount
Dropbox on /home/user/Dropbox/ type vboxsf (uid=1000,gid=1000,rw)
vm:~$ ls Dropbox/
Dropbox/pxaregsmodule.c
vm:~/projectroot/modules$ ls -la
puremodule.c
pwdmodule.c
pxaregsmodule.c -> /home/dknapp/Dropbox/pxaregsmodule.c
vm:~/projectroot/modules$ cat ../.kdev_include_paths
/home/user/projectroot/Include
正如你所看到的。我在 kdevelop 的子目录中有一个符号链接,它链接到项目树之外。我的包含文件在项目根目录中有一个包含目录。
现在问题问题是,当我在 kdevelop 编辑器中打开 pxaregsmodule.c 时,它无法识别自定义包含参数,因为它认为它是在 /home/user/Dropbox 中打开的。当然,这只会影响编辑器,它无法完成代码并且认为它丢失了包含文件。但与 makefile 和编译无关。
但是有没有办法让 kdevelop 不取消引用符号链接并认为文件正在打开,projectroot/modules
以便它可以看到包含路径?我无法使用硬链接,因为该文件位于我的共享分区上,它跨越了分区边界。
有什么解决办法吗?说清楚了吗?
答案1
在VM中,pxaregsmodule.c位于/home/user/Dropbox/pxaregsmodule.c还是/home/dknapp/Dropbox/pxaregsmodule.c?
在我看来, /projectroot/modules 中的符号链接 pxaregsmodule.c 已损坏,因为它指向错误的目录。如果您出现以下情况,会发生什么情况:
tail ~/projectroot/modules/pxaregsmodule.c
有代码显示吗?
如果这是问题,您可以通过以下方式修复:
cd ~/projectroot/modules/
rm pxaregsmodule.c
ln -s /home/user/Dropbox/pxaregsmodule.c
(为了清楚起见,不使用 ln -sf)
无论如何,如果可能的话,我强烈建议使用 Mercurial 或 Git 等现代 VCS。他们将避免这些类型的问题,如果您支付托管费用,您将获得一个可从任何地方访问的解决方案,并且具有良好的备份和安全性。也可以设置自己的服务器,甚至将存储库直接放入 Dropbox 中,并通过相关计算机上的网络从虚拟机访问它,但我不推荐后者。