在版本控制系统下存储 NetBeans C/C++ 项目

从 NetBeans IDE 7.3 开始,在版本控制系统 (VCS) 下存储 NetBeans C/C++ 项目(现有代码中的多数项目和二进制文件中的项目)变得不那么棘手。本文介绍了在 NetBeans IDE 中将 NetBeans C/C++ 项目存储在 VCS 下的详细信息。

目录

此页上的内容适用于 NetBeans IDE 7.3 及更高版本

要求

要学习本教程,您需要具备以下软件。

软件 要求的版本
NetBeans IDE(支持 C/C++) 带有 NetBeans C/C++ 插件的版本 7.3 或更新版本
Java 开发工具包 (JDK) 版本 6、7 或 8

有关下载并安装所需软件的信息,请参见 NetBeans IDE 安装说明配置 NetBeans IDE 以使用 C/C++/Fortran 文档。

NetBeans IDE 中已解决的 VCS 控制的项目问题

以下问题已在 NetBeans IDE 中得到解决:

VCS 不友好的项目数据存储

NetBeans IDE 过于频繁地用来更改项目元数据文件。例如,您可能只打开 VCS 下的项目,而不进行任何更改,然后突然意识到某些项目元数据文件已更改,因此,您需要检入它们或回退。

该问题主要与现有代码中的项目和二进制文件中的项目相关,也就是说,基于用户 makefile 的项目。

该问题的根源是:IDE 对此类项目中的哪些文件参与构建、每个文件构建所用的编译器选项是什么了解的很少。没有这类知识,代码帮助功能就无法精确。因此,IDE 必须借助一些后台智能来了解项目内容和代码帮助配置,从而使用正确的选项来解析正确的文件。遗憾的是,这种智能以 VCS 不友好的方式存储了其数据。

编译器选项

编译器问题源于这样的事实:用于构建项目的编译器选项会非常特定于项目构建于的计算机。例如,OpenJDK 构建使用 ALT_BOOTDIR,后者需要设置为我的 JDK 的路径。即使是在操作系统相同的计算机上,该路径也会不同。IDE 将所有编译器选项都存储在项目元数据中,若不了解这类选项,则下次将无法解析代码,而代码也不够精确。

当某些计算机或用户特定的信息进入 VCS 时,项目元数据会在被其他用户检出之后发生更改,并构建项目(存储新选项),即使用户未在项目中进行任何更改也是如此。

环境变量列表

对于现有代码或二进制文件中的项目,您可以指定要在存储项目元数据时使用的环境变量列表。当 IDE 存储编译器选项并且选项值与变量值一致时,将改为编写宏。

请看以下示例。ALT_BOOTDIR=/usr/jdk/latestALT_BOOTDIR 变量在我的环境中以上提到的字段中列出。如果 IDE 意识到在编译文件时使用了 -I/usr/jdk/latest/include 选项,则它将会在项目元数据中存储 ${ALT_BOOTDIR}/include

配置代码帮助向导也可以基于配置运行:只修改当前处于活动状态的配置。因此,您可以针对每个配置单独运行该向导,并针对不同平台获取不同的代码帮助设置。

无法构建项目时配置代码帮助

如果使用调试信息构建代码,则配置代码帮助向导最有效。对于 GNU 编译器,最佳选项是 -g3 -gdwarf-2;对于 Sun 编译器,最佳选项是 -g

在未构建项目或项目中不包含任何调试信息的情况下,配置代码帮助向导会提供一种特殊的模式,即在文件系统中搜索 C/C++ 头文件。在这种模式下,NetBeans IDE 会尝试在文件系统中搜索头文件,以解析执行失败的 include 指令。出于这个目的,该向导会让您输入头文件的搜索路径。默认情况下,这是项目的源根目录。

瞬态宏

可变的宏(-D 选项)也可能会意外地修改项目元数据。例如,依赖于日期或当前用户名的宏。存储此类宏值将修改项目元数据文件,但这没有多大意义。

您可以指定要在 "Transient macros"(瞬态宏)字段中忽略的此类宏的列表。这样就会阻止 IDE 将这些宏值存储在项目元数据中。将以 macro=value 形式指定宏。下面是项目属性的屏幕快照:

项目属性

受管项目

在受管项目(“C/C++ 应用程序”、“C/C++ 动态库”或“C/C++ 静态库”项目)中,您还可以使用环境变量来指定编译器选项。它们的前面应带有美元符号并置于花括号中,如下所示:${ALTBOOTDIR}/include

有关 C/C++/Fortran 支持的更多信息

get support for the NetBeans

Support


By use of this website, you agree to the NetBeans Policies and Terms of Use. © 2013, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo