我尝试使用针对 ubuntu 16.04 VM 的 Visual C++ for Linux Development 插件。与虚拟机的连接以及本地文件传输到远程文件夹 /home/user/projects/projectx 均成功。但是,当我尝试将 usr/include 或 usr/local/include 文件夹添加到其他包含目录时,无法解析相关标头。我尝试使用路径
$(RemoteRootDir)/../../../usr/local/include.我还尝试在项目文件夹内创建 usr/include 和 usr/local/include 文件夹的符号链接并给出相关路径,但同样无法解析标头。这种直接分配是否可行,或者应该只使用所需 Linux 文件夹的本地副本?
有两种类型的包含文件查找需要考虑。首先,在 Visual Studio IDE 中工作时,IntelliSense 将查找标头及其定义以协助编辑。在这种情况下,文件需要位于 Windows 主机可访问的路径上。 VCLinux 安装大多数头文件的通用副本/usr/include
在 Windows 主机上。在 VS2015 中可以找到它们C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\Linux\include\usr\include\x86_64-linux-gnu\
在 VS2017 中,它们位于C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\Linux\include\usr\include
(根据需要将社区更改为专业或企业)。这会自动包含在 Visual Studio 的预定义包含路径中。
其次,GCC (g++) 需要能够在 Linux 远程编译期间找到标头。在这种情况下,文件必须位于 Linux 系统可访问的 pth 上。不需要添加 /usr/include 等,因为 GCC 默认情况下会查找那里。您可以发现默认包含路径
g++ -v -x c -E -
在这两种情况下都没有任何理由添加/usr/include
到项目中的包含路径。如果 IntelliSense 找不到应位于的标头/usr/include
那么它可能会丢失。As here https://stackoverflow.com/questions/43022494/linux-header-file-not-recognized-in-visual-studio-2017-linux-project/43034796#43034796.
更一般地说,您可以将 Linux 系统上的任何路径添加到包含路径中。 GCC 会找到它,其中的头文件和您的程序将进行编译(所有其他条件相同)。但如果 Visual Studio (IntelliSense) 无法看到相同的标头,则可能会标记错误。包含路径可以是绝对路径或相对路径,但应注意 Linux 端的相对路径,因为参考点是远程根目录而不是项目目录。
VCLinux (1.0.6) 要求指定包含路径两次,一次针对 Windows 端,另一次针对 Linux 端。这可能会导致两个系统上具有相同路径(通常是相对路径)的文件夹被复制。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)