blob: bb19c882366f0ca46c79814c4b72274e59d484ce [file] [log] [blame]
//
// 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[+发送有关此教程的反馈意见+]