<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
   <title>NetBeans IDE C/C++ Projects Quick Start Tutorial</title>
   <meta name="KEYWORDS" content="NETBEANS, TUTORIAL, C/C++, PROJECTS">
   <meta name="DESCRIPTION" content="Short tutorial that demonstrates working with C/C++
   projects in NetBeans IDE">

   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" >
   <link rel="stylesheet" type="text/css" href="../../../netbeans.css">
</head>
<body>
<a name="top"></a>

<h1>C/C++ Projects Quick Start Tutorial</h1>
<!-- START INTRO ---------------------------------------------------------------------------------------* -->
<div class="articledate" style="margin-left: 0px;font-style:italic;">
<p>Contributed by <i>Ann
      Rice</i> and maintained by <i>Susan Morgan</i> <br>
      <em>March 2014</em> [Revision number: V8.0-1]</div>

<p>The following short tutorial takes you through the basic
   steps of creating and configuring a C or C++ project in NetBeans IDE.
</p>
<!-- END INTRO -->
<p><b>Contents</b></p>
<img src="../../../images_www/articles/73/netbeans-stamp-80-74-73.png" class="stamp"
alt="Content on this page applies to NetBeans IDE 7.2 and more recent" title="Content on this page applies to the NetBeans IDE
 7.2 and more recent">
<ul class="toc">
    <li><a href="#requirements" title="Requirements">Requirements</a></li>
<li><a href="#projects" title="Creating C and C++ Projects">Creating C 
      and C++ Projects</a></li>
    <li><a href="#running" title="Running a Project">Running a Project</a></li>
    <li><a href="#existingsourcesprojects" title="Creating a C/C++ Project From
        Existing Code">Creating a C/C++ Project With Existing Sources</a></li>
    <li><a href="#frombinaryprojects" title="Creating a C/C++ Project From a Binary File">Creating a C/C++ Project From a Binary File</a></li>
    <li><a href="#nextsteps" title="Next Steps">Next Steps</a></li>
</ul>

<h2><a NAME="requirements"></a>Requirements</h2>
<p><b>To follow this tutorial, you need the following software and resources.</b> </p>
<table>
<tbody>
<tr>
<th class="tblheader" scope="col">Software or Resource</th>
<th class="tblheader" scope="col">Version Required</th>
</tr>
<tr>
<td class="tbltd1">NetBeans IDE</td>
<td class="tbltd1"><a
href="https://netbeans.org/downloads/index.html"> version 7.2 or more recent
with NetBeans C/C++ plugin</a></td>
</tr>
<tr>
<td class="tbltd1">Java Developer Kit (JDK)</td>
<td class="tbltd1"><a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">version 6, 7, or 8</a> </td>
</tr>

<tr>
    <td class="tbltd1">
    C and C++ compilers, <tt>make</tt>, <tt>gdb</tt>
    </td>
    <td class="tbltd1">
    
   <a href="../../../community/releases/80/cpp-setup-instructions.html">Configuring the NetBeans IDE for C/C++/Fortran</a>
</tr>
</tbody>
</table>
<br>
<p>See the <a href="../../../community/releases/80/install.html">NetBeans IDE
      Installation
   Instructions</a> and <a
      HREF="../../../community/releases/80/cpp-setup-instructions.html">
      Configuring the NetBeans IDE for C/C++/Fortran</a><br> for
information about downloading and installing the required software.</p>

<p><b>Sample Projects</b> 
</p>
<p>If you want to just play with some sample projects provided in the IDE, choose
   File&nbsp;&gt;&nbsp;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. 
</p>
<h2><a name="projects"></a>Creating C and C++ Projects</h2>
<p>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.
</p>
<p>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&reg;
operating system. For information on specifying the tool collection for your
project and on defining and using remote hosts, see <a
href="development-environment.html">Defining Your C/C++ Project's Development Environment</a>.
</p>
<p>
   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.
</p>
<div class="indent">

   <h3><a name="CreatingApp"></a>Creating a C/C++ Application Project</h3>
   <ol>
      <li>Open the New Project wizard by choosing File &gt; New Project.</li>
      <li>In the wizard, select the C/C++ category.</li>
      <li>
         The wizard gives you a choice of several types of new projects.
         Select C/C++ Application and click Next.
      <br>
      <img src="../../../images_www/articles/72/cnd/quickstart/creating_application.png" alt="Screenshot of the New Project
           Wizard" class="margin-around">
      </li>
      <li>
         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.
      </li>
      <li>Click Finish to exit the wizard.</li>
   </ol>
   <p>
      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.
   </p>
   <p>
      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. 
   </p>
      <h3><a name="SwitchingViews"></a>Switching Between the Logical View and the Physical View of the Project</h3>
      <p>A project has both a logical and a physical view.
         You can switch between the logical view and the physical view of your
         project.
      </p>
      <ol>
         <li>
            Select the Files tab. This window shows the physical view of your
            project. It displays files and folders as they are stored on disk.
         <br>
         <img class="b-all margin-around" src="../../../images_www/articles/72/cnd/quickstart/files_tab.png" alt="Screenshot of the Files tab">
         </li>
         <li>
            Select the Projects tab. This window shows the logical view of 
            your project.
         <br>
         <img class="b-all margin-around" src="../../../images_www/articles/72/cnd/quickstart/projects_tab.png" alt="Screenshot of the Projects tab">

         <p class="tips">Most commands that you run on a project are available in the Projects
             tab, not the Files tab.</p>
         </li>
      </ol>
      
      <h3><a name="AddingFilesandFolders"></a>Adding Files and Folders to Your Project</h3>
      <p>You can add logical folders to your project.
      </p>
      <ol>
         <li>
            Right-click the project node of your Application project 
            and choose New Logical Folder. A new logical folder is added to the project.
         </li>
         <li>
            Right-click the new logical folder and select Rename. Type the name
            you would like to give the new folder.
         </li>
         
      </ol>
      <p>You can add both
         files and folders to an existing folder. Logical folders can be nested.
      </p>
      <h3><a name="AddingNewFiles"></a>Adding New Files to Your Project</h3>
      <p>You can add new files to your project.
      </p>
      <ol>
         <li>Right-click the Source Files folder and choose New
         &gt; C++ Source File.</li>
         <li>On the Name and Location page of the New File dialog box, type <tt>newfile</tt> in the File Name field.
           <br><br>
            <img src="../../../images_www/articles/72/cnd/quickstart/adding_files.png" alt="Screenshot of the New File dialog
              box">
              <br><br>
              </li>
         <li>Click Finish.</li>
      </ol>
      <p>
         The <tt>newfile.cpp</tt> 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. 
      </p>
      <h3><a name="MoreNewFiles"></a>Adding More New Files to Your Project</h3>
      <ol>
         <li>Right-click the Header Files folder and choose New &gt; C++ Header 
         File.
         </li>
         <li>On the Name and Location page of the New File dialog box, type <tt>newfile</tt> in the File Name field.</li>
         
         <li>Click Finish.</li>
      </ol>
      <p>
         The <tt>newfile.h</tt> file is created on disk in the directory specified in the wizard
         and added to the Header Files folder.
      </p> 
      <h3><a name="AddingExistingFiles"></a>Adding Existing Files to Your Project</h3>
      <p>
         You can add existing files to your project in two ways:
      </p>
      <ul>
         <li>
            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.
         </li>
         <li>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.
      </ul>
      
      <p class="tips">
         Do not use New menu item to add existing items. The Name and Location panel
         will tell you the file already exists.
      </p>
      <h3><a name="ProjectProperties"></a>Setting Project Properties</h3>
      <p>
      <p>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.
      </p>
      <p>The Project Properties dialog box contains build and configuration information
         for your project. To open the Project Properties dialog box:
      </p>
      <ul>
         <li>
            Right-click the project node of the 
            <tt>CppApplication_1</tt> project and choose Properties.
         <br>
         <img
         src="../../../images_www/articles/72/cnd/quickstart/project_properties.png" alt="Screenshot of the Project
              Properties dialog box" class="margin-around">
         </li>
      </ul>
      <p>
      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.
      <h3><a name="Configurations"></a>Managing Configurations</h3>
      <p>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:
      </p>
      <ol>
         <li>
            Click the Manage Configurations button in the Project Properties
            dialog box.
         </li>
         <li> 
            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.
         </li>
         <li>
            In the Rename dialog box, rename the 
            configuration to PerformanceRelease. Click OK. 
         </li>
         <li>Click OK in the Configurations dialog box.</li>
         <li>
            In the left panel, select the C Compiler node. 
         </li>
         <li>
            In the Project Properties dialog box, note that the PerformanceRelease
            configuration is selected in the Configuration drop-down list.
         </li>
         <li>
            In the property sheet in the right panel, change the Development
            Mode from Release to PerformanceRelease. Click OK.
         </li>
      </ol>
      <p>
         You have created a new configuration that will compile the application with a 
         different set of options.
      </p>
      
      <h3><a name="FileProperties"></a>Setting Source File Properties</h3>
      <p>
      <p>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.
      </p>
      <ol>
         <li>
            Right-click the <tt>newfile.cpp</tt> source file in the Projects tab and choose Properties.
         </li>
         <li>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.

         <li>Click the C++ Compiler category and see that you can override the project compiler settings
            and other properties for this file.</li>
         
         <li>Cancel the File Properties dialog box.</li>
      </ol>
      
      
         
      <h3><a name="BuildingProject"></a>Building and Rebuilding Your Project</h3>
      <p>To build your project:
      <ol>
         <li>
            Right-click the project node and choose Build, and the project  
            builds. The build output is shown in the Output window.
         </li>
         <li>
            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.
         </li>
         
         <li>
            Right-click the project node and choose Build, and the project 
            builds. The build output is shown in the Output window.
         </li>
      </ol>
<p>To rebuild your project:</p>
      <ul><li>Right-click the project node and choose Clean and Build to do 
              a complete rebuild after removing previous build products.</li>
          <li>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.</li></ul>
      <p>
         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.
      </p>
      <h3><a name="CompilingFile"></a>Compiling a Single File</h3>
      <p>
         To compile a single source file:
      </p>
      <ul>
         <li>
            
            Right-click on the <tt>main.cpp</tt> file and choose 
            Compile File. Only this file is compiled.
         </li>
      </ul>
      <p class="notes">
         Single file compilation is not supported for the project type
         C/C++ Project With Existing Sources.
      </p>
 
      
      </div>
   <h2><a name="running"></a>Running a Project</h2>
   <p>
      To see how to run a project, you will use the IDE's sample <tt>Arguments</tt> project.
      The <tt>Arguments</tt> program prints command-line arguments. Before running the
      program, you will set some arguments in the current configuration. Then you will run
      the program.
   </p>
   <p>
      To create the <tt>Arguments</tt> project, set some arguments, and run the project:
   </p>
   <ol>
      <li>Choose File &gt; New Project.</li>
      <li>In the project wizard, expand the Samples category.</li>
      <li>Select the C/C++ subcategory, then select the <tt>Arguments</tt> project. Click
         Next, then click Finish.
      </li>
      <li>Right-click the <tt>Arguments_1</tt> project node and choose Build. The
      project builds.</li>
      <li>Right-click the <tt>Arguments_1</tt> project node and choose Properties.</li>
      <li>In the Project Properties dialog box, select the Run node.</li>
      <li>
         In the Run Command text field, type 1111 2222 3333. Click OK.
      <br>
      <img src="../../../images_www/articles/72/cnd/quickstart/setting_arguments.png" alt="Screenshot of the Project Properties
           dialog box" class="margin-around">
      </li>
      <li>Right-click the project node and choose Run.The application runs.
         Your arguments are displayed in the Output window.</li>
   </ol>

   
<h2><a name="existingsourcesprojects"></a>Creating a C/C++ Project With Existing Sources</h2>
<p>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. </p>
<p>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.</p>

<div class="indent">
   <h3><a name="CreateExistingSourcesProject"></a>Creating a Project
   With Existing Sources</h3>
   <ol>
       <li>If you are running the IDE on Windows, install the
          Pthreads library from  <a href="http://sourceware.org/pthreads-win32" target="_blank">
         <tt>http://sourceware.org/pthreads-win32</tt></a>.
         <p>For convenience, you can use this
         <a href="ftp://sourceware.org/pub/pthreads-win32/pthreads-2005-03-08.exe">direct link</a>
         to the pthreads-2005-03-08.exe installer.</p>
         <p>
         Extract the pthreads library in your Windows user directory.</p>
       </li>
      <li>Download the <tt>loki-0.1.7</tt> library from
         <a href="http://sourceforge.net/projects/loki-lib" target="_blank">
         <tt>http://sourceforge.net/projects/loki-lib</tt></a>.
      </li>     
      <li>Uncompress <tt>loki-0.1.7</tt> in a directory of your choice.
      </li>
      <li>Open the New Project wizard by choosing File &gt; New Project.
      </li>      
      <li>Select the C/C++ category.</li>      
      <li>Select C/C++ Project With Existing Sources and click Next.</li>
      <li>On the Select Mode page, click the Browse button. In the Select Project Folder
      dialog box, navigate to the
            directory where you saved 
            <tt>loki-0.1.7</tt>. Select the <tt>loki-0.1.7</tt> directory.
            Click Select.        
      
      <br><br>
      <img src="../../../images_www/articles/72/cnd/quickstart/existing_sources_project1.png" alt="Screen shot of 
           Select Mode page of Project Wizard" class="margin-around b-all">
           <br><br>
      </li>
      <li>Use the default Configuration Mode, Automatic.  Click Finish.
      <p>
      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.</p>     
    
      <img src="../../../images_www/articles/72/cnd/quickstart/existing_sources_project2.png" alt="Screen shot of successful
           make of Project with Existing Sources" class="margin-around">
    
      </li>
   </ol>

   <h3><a name="frombinaryprojects"></a>Creating a C/C++ Project from a Binary File</h3>
    <p>You can create a C/C++ project from an existing binary file.</p>
    <ol>
    <li>Choose File > New Project.</li>
    <li>Select the C/C++ category.</li>
    <li>Select C/C++ Project from Binary File and click Next.
    </li>
    <li><p>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. </p>
    <p>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.</p>
    <img src="../../../images_www/articles/72/cnd/quickstart/binary_project.png" alt="Screeb shot of Select Binary File page in New Project Wizard" class="margin-around">
    </li>
    <li>Click Next.</li>
    <li>On the Project Name and Location page, you can choose the
    name and location of the project. Click Finish.</li>
    </ol>
  
   <h3><a name="BuildingRebuilding"></a>Building and Rebuilding Your Project</h3>
   <p>To build the project:
      <ul>
         <li>Right-click the project node of the project and choose Build.</li>
      </ul>
      <p>To rebuild the project:
      <ul>
         <li>Right-click the project node of the project and choose Clean and Build.</li>
      </ul>
      
      </div>
      <h2><a name="nextsteps">Next Steps</a></h2>
      <p>See <a href="navigating-editing.html">Editing and Navigating C/C++
      Source Files</a> for a tutorial on using the advanced navigation and 
      editing features in NetBeans IDE to view and modify your source code.
      </p>   
 <p>See the 
       <a href="https://netbeans.org/kb/trails/cnd.html">C/C++ Learning Trail</a> for
       more articles about developing with C/C++/Fortran in NetBeans IDE.</p>

  <div class="feedback-box"><a href="mailto:users@cnd.netbeans.org?subject=Feedback:%20C/C++%20Projects%20Quick%20Start%20-%20NetBeans%20IDE%207.4%20Tutorial">Send Feedback on This Tutorial</a></div>

</body>
</html>
