| // |
| // Licensed to the Apache Software Foundation (ASF) under one |
| // or more contributor license agreements. See the NOTICE file |
| // distributed with this work for additional information |
| // regarding copyright ownership. The ASF licenses this file |
| // to you under the Apache License, Version 2.0 (the |
| // "License"); you may not use this file except in compliance |
| // with the License. You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, |
| // software distributed under the License is distributed on an |
| // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| // KIND, either express or implied. See the License for the |
| // specific language governing permissions and limitations |
| // under the License. |
| // |
| |
| = 在版本控制系统下存储 NetBeans C/C++ 项目 |
| :jbake-type: tutorial |
| :jbake-tags: tutorials |
| :jbake-status: published |
| :icons: font |
| :syntax: true |
| :source-highlighter: pygments |
| :toc: left |
| :toc-title: |
| :description: 在版本控制系统下存储 NetBeans C/C++ 项目 - Apache NetBeans |
| :keywords: Apache NetBeans, Tutorials, 在版本控制系统下存储 NetBeans C/C++ 项目 |
| |
| 撰稿人:Vladimir Kvashin,维护人:Alyona Stashkova |
| 2014 年 3 月 [修订版本号:V8.0-1] |
| |
| 从 NetBeans IDE 7.3 开始,在版本控制系统 (VCS) 下存储 NetBeans C/C++ 项目(现有代码中的多数项目和二进制文件中的项目)变得不那么棘手。本文介绍了在 NetBeans IDE 中将 NetBeans C/C++ 项目存储在 VCS 下的详细信息。 |
| |
| |
| |
| image::images/netbeans-stamp-80-74-73.png[title="此页上的内容适用于 NetBeans IDE 7.3 及更高版本"] |
| |
| |
| |
| == 要求 |
| |
| *要学习本教程,您需要具备以下软件。* |
| |
| |=== |
| |软件 |要求的版本 |
| |
| |NetBeans IDE(支持 C/C++) |link:https://netbeans.org/downloads/index.html[+带有 NetBeans C/C++ 插件的版本 7.3 或更新版本+] |
| |
| |Java 开发工具包 (JDK) |link:http://www.oracle.com/technetwork/java/javase/downloads/index.html[+版本 6、7 或 8 +] |
| |=== |
| |
| |
| 有关下载并安装所需软件的信息,请参见 link:../../../community/releases/74/install.html[+NetBeans IDE 安装说明+]和link:../../../community/releases/74/cpp-setup-instructions.html[+配置 NetBeans IDE 以使用 C/C++/Fortran+] 文档。 |
| |
| |
| == NetBeans IDE 中已解决的 VCS 控制的项目问题 |
| |
| 以下问题已在 NetBeans IDE 中得到解决: |
| |
| * <<unfriendly,VCS 不友好的项目数据存储>> |
| * <<compiler,编译器选项>> |
| |
| |
| === VCS 不友好的项目数据存储 |
| |
| NetBeans IDE 过于频繁地用来更改项目元数据文件。例如,您可能只打开 VCS 下的项目,而不进行任何更改,然后突然意识到某些项目元数据文件已更改,因此,您需要检入它们或回退。 |
| |
| 该问题主要与现有代码中的项目和二进制文件中的项目相关,也就是说,基于用户 makefile 的项目。 |
| |
| 该问题的根源是:IDE 对此类项目中的哪些文件参与构建、每个文件构建所用的编译器选项是什么了解的很少。没有这类知识,代码帮助功能就无法精确。因此,IDE 必须借助一些后台智能来了解项目内容和代码帮助配置,从而使用正确的选项来解析正确的文件。遗憾的是,这种智能以 VCS 不友好的方式存储了其数据。 |
| |
| |
| === 编译器选项 |
| |
| 编译器问题源于这样的事实:用于构建项目的编译器选项会非常特定于项目构建于的计算机。例如,OpenJDK 构建使用 `ALT_BOOTDIR`,后者需要设置为我的 JDK 的路径。即使是在操作系统相同的计算机上,该路径也会不同。IDE 将所有编译器选项都存储在项目元数据中,若不了解这类选项,则下次将无法解析代码,而代码也不够精确。 |
| |
| 当某些计算机或用户特定的信息进入 VCS 时,项目元数据会在被其他用户检出之后发生更改,并构建项目(存储新选项),即使用户未在项目中进行任何更改也是如此。 |
| |
| |
| == 环境变量列表 |
| |
| 对于现有代码或二进制文件中的项目,您可以指定要在存储项目元数据时使用的环境变量列表。当 IDE 存储编译器选项并且选项值与变量值一致时,将改为编写宏。 |
| |
| 请看以下示例。`ALT_BOOTDIR=/usr/jdk/latest` 和 `ALT_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 形式指定宏。下面是项目属性的屏幕快照: |
| |
| [.feature] |
| -- |
| image::images/proj_props_small.png[role="left", link="images/proj_props.png"] |
| -- |
| |
| |
| == 受管项目 |
| |
| 在受管项目(“C/C++ 应用程序”、“C/C++ 动态库”或“C/C++ 静态库”项目)中,您还可以使用环境变量来指定编译器选项。它们的前面应带有美元符号并置于花括号中,如下所示:`${ALTBOOTDIR}/include`。 |
| |
| |
| == 有关 C/C++/Fortran 支持的更多信息 |
| |
| * 请访问 link:https://netbeans.org/kb/trails/cnd.html[+C/C++ 学习资源+]以获取有关使用 NetBeans IDE 的 C/C++ 功能的详细信息。 |
| * 加入 link:http://forums.netbeans.org/cnd-users.html[+NetBeans C/C++ 用户论坛+]以参与有关使用 NetBeans IDE 进行 C/C++ 开发的讨论,或者寻求帮助。 |
| * 您可以向 link:https://netbeans.org/bugzilla/enter_bug.cgi?component=cnd[+Bugzilla+] 发送错误或提出改进建议(需要在 netbeans.org 上注册)。 |
| * 有关结合使用常用的版本控制包和 NetBeans IDE 的信息,请参见_使用 NetBeans IDE 开发应用程序_中的link:http://www.oracle.com/pls/topic/lookup?ctx=nb7400&id=NBDAG234[+使用版本控制对应用程序进行版本控制+]。 |
| link:mailto:users@cnd.netbeans.org?subject=subject=Feedback:%20Storing%20NetBeans%20C/++%20Projects%20Under%20Version%20Control%20System[+发送有关此教程的反馈意见+] |