blob: ebcac52b2713d1284987fccf2caa71bcbf477319 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>在版本控制系统下存储 NetBeans C/C++ 项目</title>
<link rel="stylesheet" href="../../../netbeans.css" type="text/css">
<link rel="stylesheet" type="text/css" href="../../../print.css" media="print">
<link rel="stylesheet" type="text/css" href="../../../lytebox.css" media="screen">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" >
<meta name="description"
content="An article about storing NetBeans IDE's or Oracle Solaris Studio IDE's C/C++ projects under version control systems">
<meta name="author" content="Vladimir Kvashin ">
<meta name="keywords" content="NetBeans, IDE, integrated development environment, tutorial, guide, user, documentation, open source, C, C++, version control systems, vcs, Oracle, Solaris, Studio, development platform">
</head>
<body>
<a name="top"></a>
<h1>在版本控制系统下存储 NetBeans C/C++ 项目</h1>
<!-- START INTRO ---------------------------------------------------------------------------------------* -->
<div class="articledate" style="margin-left: 0px;font-style:italic;">
<p>撰稿人:Vladimir Kvashin,维护人:Alyona Stashkova<br> 2014 年 3 月 [修订版本号:V8.0-1]</p>
</div>
<p>从 NetBeans IDE 7.3 开始,在版本控制系统 (VCS) 下存储 NetBeans C/C++ 项目(现有代码中的多数项目和二进制文件中的项目)变得不那么棘手。本文介绍了在 NetBeans IDE 中将 NetBeans C/C++ 项目存储在 VCS 下的详细信息。</p>
<h3>目录</h3>
<img alt="此页上的内容适用于 NetBeans IDE 7.3 及更高版本" class="stamp" src="../../../images_www/articles/73/netbeans-stamp-80-74-73.png" title="此页上的内容适用于 NetBeans IDE 7.3 及更高版本">
<ul class="toc">
<li><a href="#requirements" title="要求">要求</a></li>
<li><a href="#issue" title="7.3 中已解决的 VCS 控制的项目问题">NetBeans IDE 中已解决的 VCS 控制的项目问题</a>
<ul>
<li><a href="#unfriendly">VCS 不友好的项目数据存储</a></li>
<li><a href="#compiler">编译器选项</a></li>
</ul></li>
<li><a href="#variables" title="环境变量列表">环境变量列表</a></li>
<li><a href="#cannotbuild" title="无法构建项目时配置代码帮助">无法构建项目时配置代码帮助</a></li>
<li><a href="#macros" title="瞬态宏">瞬态宏</a></li>
<li><a href="#prj" title="受管项目">受管项目</a></li>
<li><a href="#info" title="有关 C/C++/Fortran 支持的更多信息">有关 C/C++/Fortran 支持的更多信息</a></li>
</ul>
<h2><a NAME="requirements"></a>要求</h2>
<p><b>要学习本教程,您需要具备以下软件。</b></p>
<table>
<tbody>
<tr>
<th class="tblheader" scope="col">软件</th>
<th class="tblheader" scope="col">要求的版本</th>
</tr>
<tr>
<td class="tbltd1">NetBeans IDE(支持 C/C++)</td>
<td class="tbltd1"><a href="https://netbeans.org/downloads/index.html">带有 NetBeans C/C++ 插件的版本 7.3 或更新版本</a></td>
</tr>
<tr>
<td class="tbltd1">Java 开发工具包 (JDK)</td>
<td class="tbltd1"><a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">版本 6、7 或 8 </a></td>
</tr>
</tbody>
</table>
<br>
<p>有关下载并安装所需软件的信息,请参见 <a href="../../../community/releases/74/install.html">NetBeans IDE 安装说明</a><a href="../../../community/releases/74/cpp-setup-instructions.html">配置 NetBeans IDE 以使用 C/C++/Fortran</a> 文档。</p>
<h2><a name="issue"></a>NetBeans IDE 中已解决的 VCS 控制的项目问题 </h2>
<p>以下问题已在 NetBeans IDE 中得到解决:</p>
<ul><li><a href="#unfriendly">VCS 不友好的项目数据存储</a></li>
<li><a href="#compiler">编译器选项</a></li></ul>
<h3><a name="unfriendly"></a>VCS 不友好的项目数据存储</h3>
<p>NetBeans IDE 过于频繁地用来更改项目元数据文件。例如,您可能只打开 VCS 下的项目,而不进行任何更改,然后突然意识到某些项目元数据文件已更改,因此,您需要检入它们或回退。</p>
<p>该问题主要与现有代码中的项目和二进制文件中的项目相关,也就是说,基于用户 makefile 的项目。 </p>
<p>该问题的根源是:IDE 对此类项目中的哪些文件参与构建、每个文件构建所用的编译器选项是什么了解的很少。没有这类知识,代码帮助功能就无法精确。因此,IDE 必须借助一些后台智能来了解项目内容和代码帮助配置,从而使用正确的选项来解析正确的文件。遗憾的是,这种智能以 VCS 不友好的方式存储了其数据。</p>
<h3><a name="compiler"></a>编译器选项</h3>
<p>编译器问题源于这样的事实:用于构建项目的编译器选项会非常特定于项目构建于的计算机。例如,OpenJDK 构建使用 <code>ALT_BOOTDIR</code>,后者需要设置为我的 JDK 的路径。即使是在操作系统相同的计算机上,该路径也会不同。IDE 将所有编译器选项都存储在项目元数据中,若不了解这类选项,则下次将无法解析代码,而代码也不够精确。</p>
<p>当某些计算机或用户特定的信息进入 VCS 时,项目元数据会在被其他用户检出之后发生更改,并构建项目(存储新选项),即使用户未在项目中进行任何更改也是如此。
</p>
<h2><a name="variables"></a>环境变量列表</h2>
<p>对于现有代码或二进制文件中的项目,您可以指定要在存储项目元数据时使用的环境变量列表。当 IDE 存储编译器选项并且选项值与变量值一致时,将改为编写宏。</p>
<p> 请看以下示例。<code>ALT_BOOTDIR=/usr/jdk/latest</code><code>ALT_BOOTDIR</code> 变量在我的环境中以上提到的字段中列出。如果 IDE 意识到在编译文件时使用了 <code>-I/usr/jdk/latest/include</code> 选项,则它将会在项目元数据中存储 <code>${ALT_BOOTDIR}/include</code></p>
<p>配置代码帮助向导也可以基于配置运行:只修改当前处于活动状态的配置。因此,您可以针对每个配置单独运行该向导,并针对不同平台获取不同的代码帮助设置。
</p>
<h2><a name="cannotbuild"></a>无法构建项目时配置代码帮助</h2>
<p>如果使用调试信息构建代码,则配置代码帮助向导最有效。对于 GNU 编译器,最佳选项是 <code>-g3 -gdwarf-2</code>;对于 Sun 编译器,最佳选项是 <code>-g</code>
</p>
<p>在未构建项目或项目中不包含任何调试信息的情况下,配置代码帮助向导会提供一种特殊的模式,即在文件系统中搜索 C/C++ 头文件。在这种模式下,NetBeans IDE 会尝试在文件系统中搜索头文件,以解析执行失败的 include 指令。出于这个目的,该向导会让您输入头文件的搜索路径。默认情况下,这是项目的源根目录。</p>
<h2><a name="macros"></a>瞬态宏</h2>
<p>
可变的宏(<code>-D</code> 选项)也可能会意外地修改项目元数据。例如,依赖于日期或当前用户名的宏。存储此类宏值将修改项目元数据文件,但这没有多大意义。</p>
<p>您可以指定要在 "Transient macros"(瞬态宏)字段中忽略的此类宏的列表。这样就会阻止 IDE 将这些宏值存储在项目元数据中。将以 macro=value 形式指定宏。下面是项目属性的屏幕快照:</p>
<p class="align-center">
<a href="../../../images_www/articles/73/cnd/cpp-vcs/proj_props.png" rel="lytebox" title="项目属性"> <img alt="项目属性" src="../../../images_www/articles/73/cnd/cpp-vcs/proj_props_small.png"></a></p>
<h2><a name="prj"></a>受管项目</h2>
<p>
在受管项目(“C/C++ 应用程序”、“C/C++ 动态库”或“C/C++ 静态库”项目)中,您还可以使用环境变量来指定编译器选项。它们的前面应带有美元符号并置于花括号中,如下所示:<code>${ALTBOOTDIR}/include</code></p>
<h2><a name="info"></a>有关 C/C++/Fortran 支持的更多信息</h2>
<ul>
<li>请访问 <a href="https://netbeans.org/kb/trails/cnd.html">C/C++ 学习资源</a>以获取有关使用 NetBeans IDE 的 C/C++ 功能的详细信息。</li>
<li>加入 <a href="http://forums.netbeans.org/cnd-users.html">NetBeans C/C++ 用户论坛</a>以参与有关使用 NetBeans IDE 进行 C/C++ 开发的讨论,或者寻求帮助。 </li>
<li>您可以向 <a href="https://netbeans.org/bugzilla/enter_bug.cgi?component=cnd">Bugzilla</a> 发送错误或提出改进建议(需要在 netbeans.org 上注册)。</li>
<li>有关结合使用常用的版本控制包和 NetBeans IDE 的信息,请参见<i>使用 NetBeans IDE 开发应用程序</i>中的<a href="http://www.oracle.com/pls/topic/lookup?ctx=nb7400&amp;id=NBDAG234">使用版本控制对应用程序进行版本控制</a></li>
</ul>
<div class="feedback-box"><a href="mailto:users@cnd.netbeans.org?subject=subject=Feedback:%20Storing%20NetBeans%20C/++%20Projects%20Under%20Version%20Control%20System">发送有关此教程的反馈意见</a><br style="clear:both;">
</div>
</body>
</html>