当使用Visual C ++ for Linux Development时,是否可以直接使用linux文件夹/ usr / include

时间:2017-02-27 19:32:42

标签: c++ linux visual-studio

我尝试使用针对ubuntu 16.04 VM的Visual C ++ for Linux Development插件。与VM的连接以及本地文件到远程文件夹/ home / user / projects / projectx的传输是成功的。但是,当我尝试将usr / include或usr / local / include文件夹添加到其他包含目录时,无法解析相关标头。我试着用这条路 $(RemoteRootDir)/../../../ USR /本地/包括。我还尝试在projects文件夹中创建usr / include和usr / local / include文件夹的符号链接,并提供相关路径,但无法解析标题。这个直接赋值是可能的,还是只应该使用所需linux文件夹的本地副本?

2 个答案:

答案 0 :(得分:1)

要考虑两种类型的包含文件查找。首先,在Visual Studio IDE中工作时,IntelliSense将查找标题和定义,以帮助编辑。在这种情况下,文件需要位于Windows主机可访问的路径上。 VCLinux在Windwos主机上安装/usr/include的大多数头文件的通用副本。在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

更一般地说,您可以将Linux系统上的任何路径添加到包含路径。 GCC会找到它和标题,你的程序将编译(所有其他条件相同)。但是Visual Studio(IntelliSense)可能会标记错误,如果它看不到相同的标题。包含路径可以是绝对路径也可以是相对路径,但应注意Linux侧的相对路径,因为参考点是远程根而不是项目目录。

VCLinux(1.0.6)要求包含路径指定两次,一次用于Windows端,另一次用于Linux端。这可能会导致两个系统上具有相同路径(通常是相对路径)的文件夹被复制。

答案 1 :(得分:0)

当我尝试复制并将完整的/ usr / include从Linux主机替换为Windows(C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Professional \ Common7 \ IDE \ VC \ Linux \包括)它没有工作。我不得不复制和合并而不替换现有文件。