// 
//     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.
//

= C/C++ Projects Quick Start Tutorial
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: C/C++ Projects Quick Start Tutorial - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, C/C++ Projects Quick Start Tutorial

Contributed by _Ann Rice_ and maintained by _Susan Morgan_ 
_March 2014_ [Revision number: V8.0-1]

The following short tutorial takes you through the basic steps of creating and configuring a C or C++ project in NetBeans IDE.


image::images/netbeans-stamp-80-74-73.png[title="Content on this page applies to the NetBeans IDE  7.2 and more recent"]



== Requirements

*To follow this tutorial, you need the following software and resources.*

|===
|Software or Resource |Version Required 

|NetBeans IDE |link:https://netbeans.org/downloads/index.html[+ version 7.2 or more recent with NetBeans C/C++ plugin+] 

|Java Developer Kit (JDK) |link:http://www.oracle.com/technetwork/java/javase/downloads/index.html[+version 6, 7, or 8+] 

|C and C++ compilers,  ``make`` ,  ``gdb``  |link:../../../community/releases/80/cpp-setup-instructions.html[+Configuring the NetBeans IDE for C/C++/Fortran+] 
|===


See the link:../../../community/releases/80/install.html[+NetBeans IDE Installation Instructions+] and link:../../../community/releases/80/cpp-setup-instructions.html[+ Configuring the NetBeans IDE for C/C++/Fortran+]
for information about downloading and installing the required software.

*Sample Projects*

If you want to just play with some sample projects provided in the IDE, choose File > New Project, then open the Samples category and the C/C++ subcategory. The IDE provides several sample C and C++ projects to help you familiarize yourself with the IDE.


== Creating C and C++ Projects

NetBeans C/C++ support lets you create C and C++ Application and Library projects with generated makefiles, as well as C and C++ projects with existing sources.

You can build, run, and debug your project on the local host (the system from which you started the IDE) or on a remote host running a UNIX® operating system. For information on specifying the tool collection for your project and on defining and using remote hosts, see link:development-environment.html[+Defining Your C/C++ Project's Development Environment+].

With a C/C++ Application, Dynamic Library, or Static Library project, the IDE controls all aspects of how your application is built, run, and debugged. You specify project settings when creating the project and in the Project Properties dialog box. The IDE generates a makefile in which all of your settings are stored.


=== Creating a C/C++ Application Project

1. Open the New Project wizard by choosing File > New Project.
2. In the wizard, select the C/C++ category.
3. The wizard gives you a choice of several types of new projects. Select C/C++ Application and click Next. 
image::images/creating_application.png[]
4. Create a new C/C++ Application project from the wizard using the defaults. You can choose the name of the project and the location of the project.
5. Click Finish to exit the wizard.

A project is created with logical folders. A logical folder is not a directory. It is a way for you to organize your files and does not reflect where the files are physically stored on disk. Files added to logical folders are automatically part of the project and are compiled when you build the project.

Files added to the Important Files folder are not part of the project and are not compiled when you build the project. These files are just for reference and are convenient when you have a project with an existing makefile.


=== Switching Between the Logical View and the Physical View of the Project

A project has both a logical and a physical view. You can switch between the logical view and the physical view of your project.

1. Select the Files tab. This window shows the physical view of your project. It displays files and folders as they are stored on disk. 
image::images/files_tab.png[]
2. Select the Projects tab. This window shows the logical view of your project. 
image::images/projects_tab.png[]

Most commands that you run on a project are available in the Projects tab, not the Files tab.


=== Adding Files and Folders to Your Project

You can add logical folders to your project.

1. Right-click the project node of your Application project and choose New Logical Folder. A new logical folder is added to the project.
2. Right-click the new logical folder and select Rename. Type the name you would like to give the new folder.

You can add both files and folders to an existing folder. Logical folders can be nested.


=== Adding New Files to Your Project

You can add new files to your project.

1. Right-click the Source Files folder and choose New > C++ Source File.
2. On the Name and Location page of the New File dialog box, type  ``newfile``  in the File Name field. 

image::images/adding_files.png[] 

3. Click Finish.

The  ``newfile.cpp``  file is created on disk in the directory specified in the wizard and added to the Source Files folder. You can add any kind of file to this folder, not only source files.


=== Adding More New Files to Your Project

1. Right-click the Header Files folder and choose New > C++ Header File.
2. On the Name and Location page of the New File dialog box, type  ``newfile``  in the File Name field.
3. Click Finish.

The  ``newfile.h``  file is created on disk in the directory specified in the wizard and added to the Header Files folder.


=== Adding Existing Files to Your Project

You can add existing files to your project in two ways:

* Right-click the Source Files folder and choose Add Existing Item. You can point to an existing file on disk using the Select Item dialog box and add the file to the project.
* Right-click the Source Files folder and choose Add Existing Items from Folders. Use the Add Files dialog box to add folders that contain existing files.

Do not use New menu item to add existing items. The Name and Location panel will tell you the file already exists.


=== Setting Project Properties

When the project is created, it has two configurations: Debug and Release. A configuration is a collection of settings used for the project, which allows you to easily switch many settings at once when you select a configuration. The Debug configuration builds a version of your application that includes debug information. The Release configuration builds an optimized version.

The Project Properties dialog box contains build and configuration information for your project. To open the Project Properties dialog box:

* Right-click the project node of the  ``CppApplication_1``  project and choose Properties. 
image::images/project_properties.png[]

You can modify the build tool defaults, compiler settings, and other configuration settings in the Project Properties dialog box by selecting a node in the left panel and modifying the properties in the right panel. Select some of the nodes and property values and notice the properties you can set. When you set General properties, you are setting them in all configurations of the project. When you set Build, Run, or Debug properties, you are setting properties in the currently selected configuration.


=== Managing Configurations

Properties changed in the Project Properties window are stored in the makefile for the current configuration. You can edit the default configurations or create new ones. To create a new configuration:

1. Click the Manage Configurations button in the Project Properties dialog box.
2. In the Configurations dialog box, select the configuration that most closely matches your desired configuration. In this case, select the Release configuration and click the Duplicate button. Then click Rename.
3. In the Rename dialog box, rename the configuration to PerformanceRelease. Click OK.
4. Click OK in the Configurations dialog box.
5. In the left panel, select the C Compiler node.
6. In the Project Properties dialog box, note that the PerformanceRelease configuration is selected in the Configuration drop-down list.
7. In the property sheet in the right panel, change the Development Mode from Release to PerformanceRelease. Click OK.

You have created a new configuration that will compile the application with a different set of options.


=== Setting Source File Properties

When you set the project properties for your C or C++ project, the relevant properties apply to all files in the project. You can also set some properties on individual files.

1. Right-click the  ``newfile.cpp``  source file in the Projects tab and choose Properties.
2. Click the General category and see that you can specify a different compiler or other tool to build this file. You can also use a checkbox to exclude the file from the build of the currently selected project configuration.
3. Click the C++ Compiler category and see that you can override the project compiler settings and other properties for this file.
4. Cancel the File Properties dialog box.


=== Building and Rebuilding Your Project

To build your project:

1. Right-click the project node and choose Build, and the project builds. The build output is shown in the Output window.
2. Switch the configuration from Debug to PerformanceRelease in the configuration drop-down list in the main toolbar. Now the project will be built using the PerformanceRelease configuration.
3. Right-click the project node and choose Build, and the project builds. The build output is shown in the Output window.

To rebuild your project:

* Right-click the project node and choose Clean and Build to do a complete rebuild after removing previous build products.
* Right-click the project node and choose Build to do an incremental build. Previous build products are retained if their source files have not changed.

You can build, clean, or both clean and build the project by choosing actions from the Run menu or using tool bar buttons. The project also keeps object files and executables from different configurations separate, so you do not have to worry about mixing files from multiple configurations.


=== Compiling a Single File

To compile a single source file:

* Right-click on the  ``main.cpp``  file and choose Compile File. Only this file is compiled.

Single file compilation is not supported for the project type C/C++ Project With Existing Sources.


== Running a Project

To see how to run a project, you will use the IDE's sample  ``Arguments``  project. The  ``Arguments``  program prints command-line arguments. Before running the program, you will set some arguments in the current configuration. Then you will run the program.

To create the  ``Arguments``  project, set some arguments, and run the project:

1. Choose File > New Project.
2. In the project wizard, expand the Samples category.
3. Select the C/C++ subcategory, then select the  ``Arguments``  project. Click Next, then click Finish.
4. Right-click the  ``Arguments_1``  project node and choose Build. The project builds.
5. Right-click the  ``Arguments_1``  project node and choose Properties.
6. In the Project Properties dialog box, select the Run node.
7. In the Run Command text field, type 1111 2222 3333. Click OK. 
image::images/setting_arguments.png[]
8. Right-click the project node and choose Run.The application runs. Your arguments are displayed in the Output window.


== Creating a C/C++ Project With Existing Sources

When creating a C/C++ Project With Existing Sources, the IDE relies on your existing makefile for instructions on how to compile and run your application.

In this exercise, you download and install the sources for the open source Loki C++ library. Loki requires the Pthreads library to build, which is available by default on Linux, Solaris, and Mac OS X. If you are using Windows, you must download the Pthreads library before you can create a project using the Loki source files.


=== Creating a Project With Existing Sources

1. If you are running the IDE on Windows, install the Pthreads library from link:http://sourceware.org/pthreads-win32[+  ``http://sourceware.org/pthreads-win32`` +].

For convenience, you can use this link:ftp://sourceware.org/pub/pthreads-win32/pthreads-2005-03-08.exe[+direct link+] to the pthreads-2005-03-08.exe installer.

Extract the pthreads library in your Windows user directory.

2. Download the  ``loki-0.1.7``  library from link:http://sourceforge.net/projects/loki-lib[+  ``http://sourceforge.net/projects/loki-lib`` +].
3. Uncompress  ``loki-0.1.7``  in a directory of your choice.
4. Open the New Project wizard by choosing File > New Project.
5. Select the C/C++ category.
6. Select C/C++ Project With Existing Sources and click Next.
7. On the Select Mode page, click the Browse button. In the Select Project Folder dialog box, navigate to the directory where you saved  ``loki-0.1.7`` . Select the  ``loki-0.1.7``  directory. Click Select. 

image::images/existing_sources_project1.png[] 

8. Use the default Configuration Mode, Automatic. Click Finish.

The project is created and opened in the Projects tab, and the IDE automatically runs the Clean and Build actions specified in the existing Makefile. The project is also automatically configured for code assistance.

image::images/existing_sources_project2.png[]


=== Creating a C/C++ Project from a Binary File

You can create a C/C++ project from an existing binary file.

1. Choose File > New Project.
2. Select the C/C++ category.
3. Select C/C++ Project from Binary File and click Next.
4. 
On the Select Binary File page of the New Project wizard, click the Browse button. In the Select Binary File dialog box, navigate to the binary file from which you want to create a project.

The root directory for the source files from which the binary was built is filled in automatically. By default, only the source files from which the binary was built are included in the project. By default, dependencies are included in the project. The shared libraries required by the project are automatically listed.

image::images/binary_project.png[]
5. Click Next.
6. On the Project Name and Location page, you can choose the name and location of the project. Click Finish.


=== Building and Rebuilding Your Project

To build the project:

* Right-click the project node of the project and choose Build.

To rebuild the project:

* Right-click the project node of the project and choose Clean and Build.


== [[Next Steps]] 

See link:navigating-editing.html[+Editing and Navigating C/C++ Source Files+] for a tutorial on using the advanced navigation and editing features in NetBeans IDE to view and modify your source code.

See the link:https://netbeans.org/kb/trails/cnd.html[+C/C++ Learning Trail+] for more articles about developing with C/C++/Fortran in NetBeans IDE.

link:mailto:users@cnd.netbeans.org?subject=Feedback:%20C/C++%20Projects%20Quick%20Start%20-%20NetBeans%20IDE%207.4%20Tutorial[+Send Feedback on This Tutorial+]
